1.设CPU各个标志位的初始状态均为0,执行指令:
MOV AX,0 DEC AX
后,请问AX=?,SF=?,CF= ?(3分)
AX=FFFFH或-1 (1分), SF=1(1分), CF=0(1分)
(DEC 变量递减一。MOV AX,0;AX=0;DEC AX;AX=AX-1=-1=FFFFH;SF(符号标志):SF用于反映本次运算结果是正还是负,若某次运算结果的最高位(第8位或第16位)为“1”,则SF=1,否则SF=0;CF(进位标志):保存加法的进位和减法的借位,有进位或借位时CF=1,否则CF=0;结果为-1,所以SF=1,而本题中的借位是溢出借位,故而CF=0)
2.下面程序段的功能是从240H端口读取数据,测试其是否为20H,若不是则将241H端口清0,否则转向NEXT,请将程序补充完整。(5分)
MOV
DX ,240H;端口号放入段寄存器
IN AL,DX;输入数据
CMP AL, 20H;测试是否为20H JZ NEXT;如果不是转到NEXT MOV MOV OUT …… NEXT: ……
1. 定义变量DA1 DB ‘1+2=?’ DA2 DW 2 DUP (0) NUM EQU $-DA1
分析以下指令执行后寄存器的内容,并填在指令后的横线上。(5分)
SUB AX, AX MOV AL,DA1
;AL=31H;DA1=3 DX,241H
AL,0;将端口数据清零 DX,AL
11
路漫漫其修远兮,吾将上下而求索 -
MOV BL,DA2-DA1 MOV CX,NUM L1:RCL AL,1
JNC L2 INC AH L2:LOOP L1
;BL=05H ;CX=09H 程序段执行完后AL=31H,AH=03H
2. 两个压缩BCD数相加,结果保存在内存的SUM单元,如有进位保存在AH中,将下面的程序段补充完整。(3分)
X1 DB 36H X2 DB 78H SUM DB ?, ? MOV AL,X1 MOV BL,X2 ADD AL,BL
DAA;将两个压缩BCD数相加后一定要用DAA JC L1 MOV AH,0 JMP L2 L1:MOV AH,1 L2 :MOV SUM ,AL
MOV [SUM+1], AH
1.设初值为AX=1234H,BX=5678H,DX=0ABCDH,则下面一段程序: MOV CL,4;CL=4
SHL DX,CL;SHL逻辑左移;DX=0BCD0H MOV BL,AH;BX=5612H SHL AX,CL;AX=2340H
SHR BL,CL;SHR逻辑右移;BL=01H
22
路漫漫其修远兮,吾将上下而求索 -
OR DL,BL;OR两者相或;DL=D0H,BL=01H;OR DL,BL;DL=D1H 执行后,请问AX=?,BX=?,DX=?(3分) AX=2340H;BX=5601H;DX=0BCD1H
2.下面程序段的功能是求5到50之和,并将结果存放到SUM单元中,请将程序补充完整。(5分) SUM DW 0
…… MOV CX, 46 MOV BX, 5 MOV AX, 0 L1: ADD AX,BX INC BX LOOP L1 MOV SUM,AX
33
因篇幅问题不能全部显示,请点此查看更多更全内容