日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書(shū)頻道 > 電子 > 《微計(jì)算機(jī)原理》 > 第3章 8086指令系統(tǒng)

第6節(jié) 自測(cè)題

 

  1、試指出下列指令中的源操作數(shù)與目的操作數(shù)尋址方式:

  (1) MOV SI,100

  (2) MOV BP,AX

  (3) MOV [SI],1000

  (4) MOV BP,[SI]

  (5) LDS DI,[2130H]

  (6) AND DI,[BX+SI+20H]

  (7) JMP 1234H (8)HLT

  (9) ADD SI,[BX]

  (10) MOV [BX+100],DI

  答案

  (1)源操作數(shù)為立即數(shù)尋址方式,目的操作數(shù)為寄存器尋址方式。

  (2)源操作數(shù)和目的操作數(shù)均為寄存器尋址方式。

  (3)源操作數(shù)為立即數(shù)尋址方式,目的操作數(shù)為寄存器間接尋址方式。

  (4)源操作數(shù)為寄存器間接尋址方式,目的操作數(shù)為寄存器尋址方式。

  (5)源操作數(shù)為直接尋址方式,目的操作數(shù)為寄存器尋址方式。

  (6)源操作數(shù)為相對(duì)的基址加變址尋址方式,目的操作數(shù)為寄存器尋址方式。

  (7)這是程序轉(zhuǎn)移段內(nèi)直接尋址方式。

  (8)無(wú)尋址方式。

  (9)源操作數(shù)為寄存器間接尋址方式,目的操作數(shù)為寄存器尋址方式。

  (10)源操作數(shù)為寄存器尋址方式,目的操作數(shù)為寄存器相對(duì)尋址方式。

  2、指出下列傳送指令中,哪些是非法指令:

  (1) MOV DS,0100H

  (2) MOV BP,AL

  (3) MOV BX,AL

  (4) XCHG AH,AL

  (5) OUT 21H,AL

  (6) OUT 310,AL

  (7) MOV [BP+DI],AX

  (8) MOV [BX+CX],2130H

  (9) AND AX,BL

  (10) ADD AL,[BX+DX+10]

  答案

  (1)非法,不能直接向DS中送立即數(shù),要實(shí)現(xiàn)該語(yǔ)句的功能應(yīng)改為:

  MOV AX, 0100H

  MOV DS,AX

  (2)非法,源操作數(shù)和目的操作數(shù)的類(lèi)型不同。應(yīng)改為:

  MOV BP,AX

  (3)非法,源操作數(shù)和目的操作數(shù)的類(lèi)型不同。應(yīng)改為:

  MOV BX,AX

  (4)合法?! ?5)合法。

  (6)非法?! ?7)合法。

  (8)非法。

  (9)非法。源操作數(shù)和目的操作數(shù)的類(lèi)型不同。應(yīng)改為:

  AND AX,BX

  (10)非法。

  在上面的指令中,(1),(2),(3),(6),(8),(9),(10)都是非法指令。

  3、假設(shè)

  (AX)=2000H

  (BX)=1200H

  (SI)=0002H

  (DI)=0003H

  (DS)=3000H

  (SS)=3000H

  (SP)=0000H

  (31200H)=50H

  (31201H)=02H

  (31202H)=0FH

  (31203H)=90H

  請(qǐng)寫(xiě)出在下列個(gè)條指令獨(dú)立執(zhí)行完后,有關(guān)寄存器及存儲(chǔ)單元的內(nèi)容,若影響標(biāo)志位,請(qǐng)給出標(biāo)志位SF,ZF,OF,CF的狀態(tài)。

  (1) ADD AX,1200H

  (2) SUB AX,BX

  (3) MOV [BX],AX

  (4) PUSH AX

  (5) DEC BYTE PTR[1200H]

  (6) NEG WORD PTR[1200H]

  (7) SAR BYTE PTR1200[SI],1

  (8) RCL BYTE PTR[BX+SI+1],1

  (9) MUL WORD PTR[BX][SI]

  (10) DIV WORD PTR1200[DI]

  答案

  (1)(AX)=3200H,(SF,ZF,OF,CF)=(0,0,0,0)

  (2)(AX)=0E00H,(SF,ZF,OF,CF)=(0,0,0,0)

  (3)(31200H)=2000H,不影響條件碼

  (4)(3FFFEH)=2000H,(SP)=0FFFFH,不影響條件碼

  (5)(31200H)=4FH,(SF,ZF,OF,CF)=(0,0,0,/)

  (6)(31200H)=0FDB0H,(SF,ZF,OF,CF)=(1,0,0,1)

  (7)(31200H)=0FBH,(SF,ZF,OF,CF)=(1,0,0,1)

  (8)(31203H)=21H,(SF,ZF,OF,CF)=(/,/,1,1)

  (9)(DX)=121EH,(AX)=0E00H,(OF,CF)(1,1)

  (10)(AL)=38H,(AH)=80H,條件碼無(wú)定義

  4、判斷下列指令是否正確:

  (1) POP CS

  (2) PUSH WORD PTR 20[BX+SI-2]

  (3) LEA BX,4[BX]

  (4) JMP BYTE PTR[BX]

  (5) SAR AX,5

  (6) MOV BYTE PTR[BX],1000

  (7) CMP [DI],[SI]

  (8) ADD BX,OFFSET A

  (9) IN AL,DX

  (10) MUL 25

  答案

  (1)錯(cuò) (2)對(duì) (3)對(duì) (4)錯(cuò) (5)錯(cuò)

  (6)錯(cuò) (7)錯(cuò) (8)對(duì) (9)對(duì) (10)錯(cuò)

  5、試分析在下列程序段執(zhí)行完后,A單元的內(nèi)容是什么?

  DATA SEGMENT

  A DW 0

  B DW 0

  C DW 0

  DATA ENDS

  CODE SEGMENT

  ......

  MOV BX,OFFSET C

  MOV AX,[BX]

  MOV B,AX

  MOV AX,2[BX]

  ADD AX,B

  MOV A,AX

  ......

  CODE ENDS

  答案

  (A)=250

  6、假設(shè)X和X+2單元的內(nèi)容為雙精度數(shù)為P,Y和Y+2單元的內(nèi)容為雙精度數(shù)Q(X,Y為低位字),下列程序段使當(dāng)2P>Q時(shí),(AX)=2。請(qǐng)把程序填寫(xiě)完整。

  MOV DX,X+2

  MOV AX,X

  ADD AX,X

  ADC DX,X+2

  CMP DX,Y+2

  ( ) L2

  ( ) L1

  CMP AX,Y

  ( ) L2

  L1: MOV AX,1

  JMP EXIT

  L2: MOV AX,2

  EXIT:INT 20H

  答案

  (1)JL (2)JG (3)JBE

  7、編寫(xiě)一段程序,實(shí)現(xiàn)下述要求:

  (1)使AX寄存器的低4位清零,其余位不變。

  (2)使CL寄存器的內(nèi)容變?yōu)樗膫€(gè)組合的BCD數(shù),其中百位數(shù)放在DX中,十位數(shù)放在AH中,個(gè)位放在AL中。

  (3)使AL寄存器的低4位保持不變,高位取反。

  答案

  (1)AND AX,0FFF0H

  (2)因CL的內(nèi)容小于255,千位數(shù)為0,要將CL中的二進(jìn)制數(shù)變?yōu)榻M合BCD數(shù),采用除法轉(zhuǎn)換法,先將(CL)除以100,得商為百位數(shù);再將余數(shù)除以10,所得為十位數(shù),余數(shù)為個(gè)位數(shù)。程序如下:

  MOV AL,CL      ;將CL內(nèi)容保存在AL中

  AND AX,0FFH     ;清AH

  MOV BL,100     ;將除數(shù)100送BL

  DIV BL        ;(AX)/(BL),商在AL中,余數(shù)在AH中

  MOV DL,AL      ;商(百位數(shù))送DL

  MOV DH,0      ;千位數(shù)為0送DH

  MOV BL,10      ;將除數(shù)10送BL

  MOV AL,0

  XCHG AH,AL     ;將余數(shù)送AL,0送AH

  DIV BL        ;(AX)/(BL),商在AL中,余數(shù)在AH中

  XCHG AH,AL     ;商(十位數(shù))送AL,余數(shù)(個(gè)位數(shù))送AL

  (3) MOV AH,AL      ;將AL存在AH中

  AND AL,0FH      ;將AL高4位清0,低4位保持不變

  NOT AH         ;將原AL中的內(nèi)容取反

  AND AH,0F0H     ;將原AL中的低4位清0

  OR AL,AH       ;將AL與AH或起來(lái)

  8、設(shè)有兩個(gè)8字節(jié)的BCD碼數(shù)據(jù)BCD1和BCD2,BCD1數(shù)以1000H為首址在內(nèi)存中順序存放;BCD2數(shù)以2000H為首址在內(nèi)存中順序存放。要求相加后將結(jié)果順序存放在以2000H為首址的內(nèi)存中。

  答案

  MOV CX,4        ;字?jǐn)?shù)送CX

  MOV BX,0        ;地址指針BX清0

  CLC            ;清CF

  L1:MOV AX,[BX+1000H]  ;取BCD1的一個(gè)字

  ADC AX,[BX+2000H]    ;與BCD2的一個(gè)相應(yīng)的字

  ;及進(jìn)位標(biāo)志相加

  AAA

  INC BX          ;修改地址指針

  INC BX

  LOOP L1         ; 循環(huán)完成則退出

  9、若32為二進(jìn)制數(shù)存放于DX和AX中,試?yán)靡莆慌c循環(huán)指令實(shí)現(xiàn)以下操作:

  (1)DX和AX中存放的無(wú)符號(hào)數(shù),將其分別乘2和除2。

  (2)若DX和AX中為有符號(hào)數(shù),將其分別乘2和除2。

  答案

  (1)無(wú)符號(hào)數(shù)乘2 SHL AX,1

  RCL DX,1

  無(wú)符號(hào)數(shù)除2 SHR DX,1

  RCR AX,1

  (2)有符號(hào)數(shù)乘2 SHL AX,1

  RCL DX,1

  無(wú)符號(hào)數(shù)除2 SAR DX,1

  RCR AX,1

  10、設(shè)從內(nèi)存0500H單元開(kāi)始存放8個(gè)字節(jié),要求對(duì)每個(gè)字節(jié)內(nèi)容進(jìn)行同一種字符處理,處理完后又順序送或以0500H為首址的8個(gè)單元中。提示:設(shè)字節(jié)處理可調(diào)用子程序SUROT1。

  答案

  CLD

  MOV SI,0500H

  MOV CX,8

  L1:LODSB

  PUSH CX

  CALL SUROT1

  POP CX

  DEC CX

  MOV [SI-2],AL

  JNZ L1

  11、試編寫(xiě)從內(nèi)存0404H單元開(kāi)始的256個(gè)字節(jié)單元清零程序。

  答案

  CLD

  XOR AX,AX

  MOV DI,0404H

  MOV CX,256

  REP STOSB

  12、設(shè)以2000H為首址的內(nèi)存中,存放著10個(gè)帶符號(hào)的字節(jié)數(shù)據(jù)。試編寫(xiě)找出最大的數(shù),并村入2000H單元中的程序。

  答案

  MOV SI,2000H

  MOV CX,10

  MOV DL,80H

  L1:LODSB

  CMP AL,DL

  JLE L2

  MOV DL,AL

  L2:LOOP L1

  MOV [2000H],DL

  MOV AH,4CH

  INT 21H

  13、將兩位組合BCD數(shù)轉(zhuǎn)換成ASCII碼,并將存放于指定單元中。

  答案

  設(shè)兩位組合BCD碼已存放在AL中,且已定義變量:BUF DB 10 DUP(?)可以有如下程序段:

  MOV SI,0

  MOV BL,AL

  AND AL,0FH

  ADD AL,30H

  MOV BUF[SI],AL

  MOV CL,4

  AHR BL,CL

  ADD BL,30H

  INC SI

  MOV BUF[SI],BL

  14、設(shè)有兩數(shù)X和Y,且X=85,Y=6,用分離BCD數(shù)完成X/Y。

  答案

  BCD1 DB 05H,08H

  BCD2 DB 06H

  BCD3 DB 3 DUP(?)

  MOV AH,0

  MOV AL,BCD1+1

  MOV BL,BCD2

  DIV BL

  MOV BCD3+1,AL

  MOV AL,BCD1

  AAD

  DIV BL

  MOV BCD3,AL

  MOV BCD3+2,AH

  15、試編寫(xiě)程序,要求能從鍵盤(pán)接收一個(gè)個(gè)位數(shù),然后響鈴N次(響鈴的ASCII碼為07H)。

  答案

  BEGIN: MOV AH,1

  INT 21H

  AND AL,0FH

  CBW

  MOV CX,AX

  BELL:MOV DL,07

  MOV AH,02H

  INT 21H

  LOOP BELL

  EXIT:RET

  16、在直接尋址方式中,一般只指出操作數(shù)的偏移地址。試問(wèn):段地址如何確定?如果要用某個(gè)段寄存器指出段地址,指令應(yīng)如何表示?

  答案

  若無(wú)前綴說(shuō)明,默認(rèn)DS為段寄存器,則應(yīng)指明段名稱(chēng),例如:MOV BX,CS:[3000H]即是將CS段中的3000H和3001H兩個(gè)單元的內(nèi)容送BX中。

  17、試問(wèn):在寄存器間接尋址方式中,如果指令中沒(méi)有具體指明段寄存器,段寄存器如何確定?

  答案

  無(wú)前綴說(shuō)明時(shí),默認(rèn)段寄存器為DS,但若寄存器用BP,則對(duì)應(yīng)的段為SS。

  18、當(dāng)用寄存器間接尋址方式時(shí),試問(wèn):BX,BP,SI,DI分別在什么情況下使用?它們的物理地址如何計(jì)算?請(qǐng)舉例說(shuō)明。

  答案

  寄存器間接的物理地址為

  DS*16+BX

  DS*16+SI

  DS*16+DI

  SS*16+BP

  例如,MOV AX,[BX] 若(DS)=2000H,(BX)=1000H則物理地址為

  2000H*16+1000H=21000H

  19、試問(wèn):使用堆棧操作指令時(shí)要注意什么?傳送與交換指令涉及內(nèi)存操作時(shí)分別注意什么?

  答案

  堆棧操作時(shí)應(yīng)注意:(1)堆棧操作是字操作;(2)CS不能作為POP指令的目標(biāo)操作數(shù);(3)堆棧操作不影響標(biāo)志。交換指令涉及內(nèi)存時(shí)必須有一個(gè)是寄存器操作數(shù)。

  20、試指出對(duì)SS和SP寄存器值修改時(shí)的特殊規(guī)定,并說(shuō)明原因。

  答案

  SP的變化范圍為64KB,在堆棧段指定后,SP可以在該段指定范圍內(nèi)從0000H~FFFFH。當(dāng)64KB不夠用時(shí),可對(duì)SS設(shè)新值。但只有一個(gè)堆棧段是當(dāng)前可直接尋址的。

  21、用增、減量指令設(shè)計(jì)程序時(shí),其后不能用標(biāo)志位作為判斷依據(jù)。為什么?

  答案

  增、減量指令不影響標(biāo)志位。

  22、當(dāng)使用乘法指令時(shí),特別要注意判斷用有符號(hào)乘法指令還是用無(wú)符號(hào)指令。為什么?

  答案

  帶符號(hào)乘法指令在運(yùn)算過(guò)程中是將該數(shù)變?yōu)樵a并去掉符號(hào),然后再相乘(絕對(duì)值相乘)。無(wú)符號(hào)數(shù)乘法指令無(wú)此轉(zhuǎn)換過(guò)程。

  23、條件轉(zhuǎn)移指令均為相對(duì)轉(zhuǎn)移指令。請(qǐng)解釋“相對(duì)轉(zhuǎn)移”的含義。試問(wèn)若需往較遠(yuǎn)的地方進(jìn)行條件轉(zhuǎn)移,該怎么辦?

  24、當(dāng)執(zhí)行中斷指令時(shí),堆棧的內(nèi)容有什么變化?如何求得子程序的入口地址?

  答案

  當(dāng)執(zhí)行中斷指令時(shí),堆棧內(nèi)應(yīng)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。8086的中斷地址取得與中斷類(lèi)型碼有關(guān)。

  25、試述中斷返回指令I(lǐng)RET和RET指令的區(qū)別。

  答案

  IRET可使壓如堆棧中的斷點(diǎn)值及程序狀態(tài)字彈出至CS,IP和PSW(FLAGS)繼續(xù)執(zhí)行程序。RET僅用語(yǔ)段內(nèi)返回,即只恢復(fù)IP之值。

?
宜阳县| 前郭尔| 颍上县| 勃利县| 隆昌县| 洛隆县| 南开区| 开封市| 肥东县| 乌兰浩特市| 京山县| 延津县| 固镇县| 太白县| 赤壁市| 柘城县| 青海省| 汾西县| 鹿邑县| 舞钢市| 炉霍县| 宾川县| 馆陶县| 承德县| 包头市| 湟源县| 浮山县| 东源县| 和硕县| 祁阳县| 黔东| 临湘市| 东城区| 黎川县| 丁青县| 丹棱县| 新建县| 宜城市| 汉中市| 新绛县| 台安县|