1、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”,则SF1,否则SF0;CF(进位标志):保存加法的进位和减法的借位,有进位或借位时CF=1,否则CF=0;结果为-1,所以SF=1,而本题中的借位是溢出借位,故而CF=0)2.下面程序段的功能是从
2、240H端口读取数据,测试其是否为20H,若不是则将241H端口清0,否则转向NEXT,请将程序补充完整。(5分)MOVDX ,240H;端口号放入段寄存器IN AL,DX;输入数据CMP AL, 20H;测试是否为20HJZ NEXT;如果不是转到NEXTMOVDX,241H MOVAL,0;将端口数据清零OUTDX,ALNEXT: 1. 定义变量DA1 DB 1+2=? DA2 DW 2 DUP (0) NUM EQU $-DA1 分析以下指令执行后寄存器的内容,并填在指令后的横线上。(5分)SUB AX, AXMOV AL,DA1;AL=31H;DA1=3MOV BL,DA2-DA1;B
3、L=05HMOV CX,NUM ;CX=09HL1:RCL AL,1JNC L2INC AHL2:LOOP L1程序段执行完后AL=31H,AH=03H2. 两个压缩BCD数相加,结果保存在内存的SUM单元,如有进位保存在AH中,将下面的程序段补充完整。(3分)X1 DB 36HX2 DB 78HSUM DB ?,?MOV AL,X1MOV BL,X2ADD AL,BLDAA;将两个压缩BCD数相加后一定要用DAA JC L1MOV AH,0 JMP L2 L1:MOV AH,1L2:MOV SUM ,ALMOV SUM+1, AH1.设初值为AX=1234H,BX=5678H,DX=0ABC
4、DH,则下面一段程序: 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 OR DL,BL;OR两者相或;DL=D0H,BL=01H;OR DL,BL;DL=D1H执行后,请问AX=?,BX=?,DX=?(3分)AX=2340H;BX=5601H;DX=0BCD1H2.下面程序段的功能是求5到50之和,并将结果存放到SUM单元中,请将程序补充完整。(5分) SUM DW 0 MOV CX, 46 MOV BX, 5 MOV AX, 0L1: ADD AX,BX INC BX LOOP L1 MOV SUM,AX