四、程序分析题(本大题共6小题,每小题6分,共36分)
31.已知AX=0FF70H,BX=30H,CF=1
OR BX,0FF40H
SBB AX,BX
上述二条指令执行后,AX=___________,BX=___________。
32.已知AX=5678H
MOV BX,AX
NEG BX
ADC AX,BX
上述程序段运行后,AX=___________,BX=___________。
33.A1 DB 65H
A2 DB?
A3 DB?
┇
MOV AL,A1
MOV CL, 4
SHR AL,CL
ADD AL,30H
MOV A2,AL
MOV AL,A1
AND AL,0FH
OR AL,30H
MOV A3,AL
上述程序段执行后(A2)=___________,(A3)___________。
34.MOV AH,1
INT 21H;从键盘输入字符
AND AL,0FH
MOV BL,AL
MOV AH,1
INT 21H;从键盘输入字符
MOV AH,0
AND AL,0FH
ADD AL,BL
PUSH AX
DAA
PUSH AX
┇
上述程序段执行时,若第一次从键盘输入6,第二次从键盘输入7。那么:
(1)第一次AX进栈的数是( )
(2)第二次AX进栈的数是( )
35.MOV BX,AX
XOR BX,0423H
JZ NEXT
OR BX,1
NEXT:……
┇
若上述程序段执行时,指令JZ产生3分支,说明AX中的值是___________,执行后BX=___________。36.HTOA PROC
AND AL,0FH
ADD AL,90H
DAA
ADC AL,40H
DAA
RET
HTOA ENDP
请回答:(1)若执行子程序前AL=09H,执行后AL=___________;
(2)若执行子程序前AL=0DH,执行后AL=___________。
五、程序填空题(本大题共2小题,每小题6分,共12分)
37.下面程序段是判断AL和BL中第4位是否相同,如相同,则AL置全0,否则AL置全1。试把空白处填上适当的指令。(每一空白处填一条指令)
①
AND AL,10H
②
MOV AL,0FFH
NEXT:……
38.下面程序段完成将以BUF为首址的100个字节数据的位置颠倒过来,请在空白处各填上一条指令。
①
LEA SI,BUF
MOV DI,SI
ADD DI,99
NEXT:MOV AL,[SI]
②
MOV [SI],AL
INC SI
DEC DI
LOOP NEXT
六、编制程序题(本大题共2小题,第39小题6分,第40小题12分,共18分)
39.限用二条逻辑指令将寄存器AL中第0,2位置1,其他位变反。
40.在M1和M2两数据区分别有20个带符号数。试编制一完整源程序,求出对应项两数据平均值(平均值的小数部分略去),并存入M3数据区中(要求在程序中一定要使用STOS存串指令)
DATA SEGMENT
M1 DB XX,XX,XX……
M2 DB XX,XX,XX……
M3 DB 20 DUP(0)
DATA ENDS