内容发布更新时间 : 2024/11/19 6:28:23星期一 下面是文章的全部内容请认真阅读。
三、 程序分析题(每小题6分,共24分)
1. A DW 1234H B DW 5678H :
PUSH A PUSH B POP A POP B
试回答:①上述程序段执行后(A)=_______,(B)=______ ②设执行前SP=200H,执行后SP=____________
2AB.读下面程序段,请问,在什么情况下,本段程序的执行结果是AH=0?
BEGIN: IN AL,5FH TEST AL,80H JZ BRCH1 MOV AH,0
JMP STOP BRCH1: MOV AH,0FFH STOP: HLT
答: 3A. 现有下列程序段:
MOV AX,6540H MOV DX,3210H MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
试问上述程序段运行后,
(AX)=_____________ (BL)=_____________ (DX)= _____________ 4A现有下列程序段
MOV AL,60H MOV BL,20H
16
STC
ADC AL,BL
问程序执行后,AL= BL= CF=
.已知(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何? (1) MOV CL,20H[BX][SI] (2) MOV [BP][DI],CX (3) LEA BX,20H[BX][SI]
MOV AX,2[BX]
(4) LDS SI,[BX][DI]
MOV [SI],BX
(5) XCHG CX,32H[BX]
XCHG 20H[BX][SI],AX
答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H;
(5) (09226H)=1234H,(AX)=5678H.
1 .假设寄存器AX=1234H,DX=0A000H
MOV BX,0 MOV CX,BX SUB CX,AX SBB BX,DX MOV AX,CX MOV DX,BX
上述程序段执行后AX= 0FDCFH ,DX= 60000H
17
程序功能是 对原AX、DX中的值求补码,因为取补码指令就相当于用0减去此操作数,见书本P122 .
4.分析下面程序段, MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD AL,BL
试问程序段执行后(BL)=11100100B=_E4H_(AL)=
11111001B=F9H
5.程序段如下:
BLK1 DB 46,84,34,-5,20,122,73 :
MOV CX,7 LEA S1,BLK1
NEXT: MOV AL,[SI] INC SI
TEST AL,81H LOOPZ NEXT MOV BL,[SI] :
请回答程序段运行后:(AL)=_____46_______ (BL)=____84________
14.对于下面的数据定义,各条MOVE指令单独执行后,有关寄存器的内容是什么? FLDB DB
TABLEA DW 20DUP(?) TABLEB DB ‘ABCD’
18
MOVE AX,TYPE FLDB MOVE AX,TYPE TABLEA MOVE CX,LENGTH TABLEA MOVE DX,SIZE TABLEA MOVE CX,LENGTH TABLEB 解答: AX=0001H AX=0002H CX=0014H DX=0028H CX=0001H。
19.读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0? BEGIN: IN AL,5FH TEST AL,80H JZ BRCHl MOV AH,0 JMP STOP BRCHl: MOV AH,0FFH STOP: HLT
解答:AL中的最高位为1时。 20.读程序:
START: IN AL,20H MOV BL,AL IN AL,30H MOV CL,AL MOV AX,0 ADLOP: ADD AL,BL ADC AH,0 DEC CL JNZ ADLOP HLT 请问: (1)本程序实现什么功能? (2)结果在哪里?
解答:完成20H*30H,结果在AX中。
21.请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。 解答: MOV BX,AX MOV CL 2
19
SHL AX, CL ADD AX,BX SHL AX ,1 22.编程序使:
(1)AX寄存器低4位清零。 (2)BX寄存器低4位置“1”。 (3)CX寄存器低4位变反。
(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。
解答 :1,AND AX ,0FFF0H 2,OR BX ,000FH 3,XOR CX ,000FH 4,TEST DL ,48H JZ LOOP MOV DH,1 HLT
LOOP :MOV DL ,0 HLT
23.编一程序段,完成符号函数(-128≤x≤127): 1 (x.>0)
y= 0 (x=0) -1 (x<0) 假设x的值存放在DATAl中,y的值存放在DATA2中。 解答: START :MOV AL ,DATA1 AND AL,AL JGE BIGR MOV AL,0FFH MOV DATA2.AL HLT BIGR:JE EQUL MOV AL,1 MOV DATA2,AL HLT
EQUL:MOV DATA2,AL HLT
24.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“l”的个数,统计结果送CX中。
解答: START :MOV CX ,0 LOOP: SUB AX,0 JZ STP
20