MOV BX,OFFSET YY1 MOV AX,[BX]
MOV CL,BYTE PTR YY2 MOV CH,BYTE PTR YY2+1
上述程序段运行后,AX=___________,BX=____________,CX=__________
4. 下面程序段完成的功能是什么? mov al, bufX cmp al, bufY jge done mov al, bufY done: mov bufZ, al 5下面程序段完成的功能是什么? cmp bufX,0 jl next mov signX,0 jmp done next: mov signX,-1 done:
6、下面程序段完成的功能是什么? mov dl,’2’ mov ax,bufX cmp ax,bufY je next1 dec dl
next1: cmp ax,bufZ je next2 dec dl next2: mov ah,2 int 21h
四、程序填空题(下列各小题中,一个横线上只能填一条指令。每小题6分,共12分) 1.DA1数据区中有50个字节数据,下面程序段将每个数据的低四位不变,高四位变反,并依次存入DA2数据区中。请将程序补充完 整。
MOV CX,50 LEA SI,DA1 LEA DI,DA2
K1:MOV AL,[SI] ____________ MOV [DI],AL INC SI INC DI DEC CX
_____________
2.下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位BCD码存放在A3单元,低位BCD码存放在A2单元, 再分别转换为对应的ASCⅡ码。请将程序补充完整。 MOV AL,A1 MOV CL,4 __________ OR AL,30H MOV A3,AL MOV AL,A1 __________ OR AL,30H MOV A2,AL
1.DA1数据区中有50个字节数据,下面程序段将每个数据的四位不变,低高四位变反,并依次存入DA2数据区中。请将程序补充完整。 MOV CX,50 LEA SI,DA1 LEA DI,DA2 K1:MOV AL,[SI] ____________ MOV [DI],AL INC SI INC DI
_____________
2. AAD指令是用于除法指令之前,进行非压缩BCD码调整的。实际上,处理器的调整过程是:AL←AH×10+AL,AH←0。如果指令系统没有AAD指令,可用下面子程序完成这个调整工作。 aadp proc
push bx mov bl,ah shl ah,1 shl ah,1 add bl,ah mov ah,0 pop bx ret aadp endp
五、编制程序题
编写一个程序段:先提示输入数字“Input Number:0 ~ 9”,然后在下一行显示输入的数字,结束;如果不是键入了0 ~ 9数字,就提示错误“Error!”,继续等待输入数字。
汇 编 语 言 参 考 答 案
一、单项选择题
1、B 2、C 3、A 4、D 5、D
6、A 7、D 8、C 9、B 10、A 11、D 12、B 13、A 14、D 15、C
16、A 17、D 18、A 19、D 20、C 1、D 2、A 3、A 4、D 5、C
6、B 7、D 8、B 9、A 10、D 11、B 12、B 13、D 14、B 15、C
16、C 17、B 18、C 19、D 20、A
二、简答题
1. 给出下列2条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态: xor ax,ax ; AX=0000H 0 1 0 0 1 not ax ; AX=FFFFH 0 1 0 0 1 2. NOT AL OR AL , 1 AND AL, 7FH
3. (1) AL的D0或D7至少有一位为1 (2) CX(无符号数)< 64h 4. mov ax, word ptr buffer1 sub ax, word ptr buffer2;先减低16位 mov dx, word ptr buffer1+2 sbb dx, word ptr buffer2+2;后减高16位,需减低16位的借位 5. test dx,0f000h ;test dh,0f0h jz next ;jnz next mov ax,-1 ;mov ax,0 jmp again
next:mov ax,0 ;mov ax,0ffffh again: ...
寻址方式 物理地址
⑴基址寻址 31010H ⑵基址变址寻址 201A0H ⑶相对基址寻址 15090H
⑷相对基址寻址 20180H ⑸相对基址变址寻址 201B0H
(二)(1) 进位标志。若运算结果的最高位产生一个进位或借位,则CF=1,否则CF=0。 (2) 溢出标志。若在算术运算中带符号数的运算结果,当字节运算时大于+127或小于-128;字运算时大于+32767或小于-32768,则OF=1,否则OF=0。
(3) 辅助进位标志。若在字节操作时,由低半字节向高半字节有进位或借位;或在字操作时,由低位字节向高位字节有进位或借位,则AF=1,否则AF=0。 (4) 零标志。若运算结果为0,则ZF=1,否则ZF=0。
(5) 方向标志。若用指令置DF=1,则串操作指令就为自动减量指令,也就是从高地址向低地址处理串;若DF=0,则串操作指令就为自动增量指令,也就是从低地址向高地址处理串。
三、程序分析题
1. A、上述程序段执行后(A)=5678H ,(B)= 1234H B、执行后SP= 2000H 2.AX= 1234H ZF= 0
3.AX= 3040H BX= 3040H CX=3040H 4. 0FCH 0FEH 0FFH
5. 有一个100个字节元素的数组,其首地址为ARRAY,将每个元素减1存于原处。 6.AL=0FFH CF= 1
1. A、上述程序段执行后(A)=3412H,(B)= 7856H B、执行后SP= 1000H 2.AX= 5678H ZF= 0 SF=0 3.AX= 3412H BX= 1234H CX=1234H
4. 把变量bufX,bufY较大者存入bufZ,若相等则任存其一。 5. 把变量bufX的符号状态存入signX。
6.若bufX、bufY、bufZ都不等、两个相等、都相等,对应显示0,1,2
四、程序填空题
1. XOR AL,0F0H JNZ K1 2. SHR AL,CL AND AL,0FH
1. XOR AL,0FH LOOP K1 2. shl ah,1 add al,bl
五、编制程序题
inmsg ermsg
.model small .stack .data
db ‘Input Number:0 ~ 9’,0dh,0ah,’$’ db ‘Error!’,’$’
again: erdisp: done:
.code .startup
mov dx,offset inmsg mov ah,9 int 21h ;显示输入数字0~9 mov ah,1 int 21h cmp al,’0’ jb erdisp cmp al,’9’ ja erdisp mov dl,al mov ah,2 int 21h jmp done
;接受一个字符
;判断是否输入的是数字0~9
;显示输入的数字 ;结束
mov dx,offset ermsg mov ah,9 int 21h ;显示输入错误 jmp again ;继续输入
.exit 0 end