第3章 汇编语言一.填空题1.指令MOV [BX+SI],AL 中的目的操作数使用______段寄存器,属于______寻址方式。
解答:指令MOV [BX+SI],AL 中的目的操作数使用___DS___段寄存器,属于__基址变址____寻址方式。
2. 指令MOV BX ,NUM[SI]的源操作数使用的是______寻址方式,SUB AX ,[BX+SI]使用的是______寻址方式。
解答:指令MOV BX ,NUM[SI]源操作数使用了变址寄存器和一个位移量,因此是变址寻址方式。
指令SUB AX ,[BX+SI]中源操作数指定的一个基址寄存器BX 和一变址寄存器SI ,因此属于基址变址寻址方式。
3.指令LEA BX,[BP+SI]的源操作数位于 ,执行后BX 的内容是 。
解答:指令LEA BX,[BP+SI]的源操作数位于 堆栈段 ,执行后BX 的内容是 BP 和SI 的内容之和 。
4. 堆栈指针SP 的初值为2000H ,AX=3000H ,BX=5000H ,CX=1000H ,问(1)执行PUSH AX ,PUSH BX 后,SP= 。
(2)再执行PUSH CX ,POPBX ,POPAX 后, SP= AX= ,BX= 解答:(1)执行PUSH AXSP -2=1FFEH →SP ,指针在位置1处,栈顶为AX 的内容 执行PUSH BXSP -2=1FFCH →SP ,指针在位置2处,栈顶为BX 的内容 (2)再执行PUSH CX ,POPBX ,POPAX 后, 执行PUSH CXSP -2=1FFAH →SP ,指针在位置3处,栈顶为CX 的内容 执行POP BX将栈顶内容1000H 弹出到BX 中,SP +2=1FFCH →SP ,指针在位置4处,BX =1000H 执行POP AX将栈顶内容5000H 弹出到AX 中,SP +2=1FFEH →SP ,指针在位置5处,AX =5000H 本题的正确答案为:(1)执行PUSH AX ,PUSH BX 后,SP= 1FFCH 。
(2)再执行PUSH CX ,POPBX ,POPAX 后,SP= 1FFEH AX= 5000H ,BX= 1000H5.若(AX )=7531H ,(BX )=42DAH ,则下列指令段SAHFPUSH BXPOPF指令执行完毕后(AX )= ,(SF ,ZF ,CF ,OF )=( , , , )。
解答:指令执行完毕后(AX )= 7531H ,(SF ,ZF ,CF ,OF )=( 1 , 1 , 0 , 0 )6. 已知AL=2EH ,BL=6CH ,执行指令ADD AL ,BL 之后,AL = ,BL = ,ZF = AF = OF = PF = CF = 。
解答:已知AL=2EH ,BL=6CH ,执行指令ADD AL ,BL 之后,AL = 9AH ,BL = 6CH ,ZF = 0 AF = 1 OF = 1 PF = 1 CF = 0 。
……③1FFAH 00H10H②1FFCH ④ 00H 50H ①1FFEH ⑤ 00H 30H 2000H……7. 对两个无符号8位二进制数进行加法运算后,结果为0EH,且标志位CF=1,OF=1,SF=0,其结果应为十进制数。
解答: CPU对两个无符号8位二进制数进行加法运算后,结果为0EH,且标志位CF=1,OF=1,SF=0,其结果应为十进制数 270 。
8. 设(AL)=B,则执行NEG AL后,(AL)=,设(AL)=B,则执行NEG AL后,(AL)=。
解答:基址变址寻址在计算机中的减法运算可以将减数求补,(AL)=B是一个负数,求它的真值,就对其求补(AL)=B=-1100000B=-60H执行NEG AL后,(AL)= 01100000B=60H9.已知:(AL)=7AH,题(1),(2)相互独立,求AL的值。
(1)SUB AL,20H (AL)=()(2)CMP AL,20H (AL)=()解答:(1)SUB AL,20H这条是减法指令,7AH-20H=5AH,将结果回送到AL中因此(AL)=5AH(2)CMP AL,20H这是比较指令,将目的操作数与源操作数相减,但不送回结果,只根据结果置标志位,即(DST) -(SRC)。
指令执行后,两个操作数均不发生变化。
因此(AL)=7AH10.设DS=1000H、ES=2000H、SS=3000H、SI=00C0H、DI=0170H、BX=01B0H、AX=5657H,(10370H)=3AH,(10371H)=67H数据段中的变量NUM的偏移地址值为0050H。
①求下条指令源操作数的物理地址为ADD AX ,NUM[BX][DI]②指令执行完成后OF= ,CF=解答:①ADD AX ,NUM[BX][DI]的源操作数是相对的基址变址寻址,处于数据段中,有效地址为:EA=0050H+01B0H+0170H=0370HPA=DS×10H+EA=10370H源操作数为10370H单元和10371H单元的内容=673AH②指令执行完成后,AX=673AH+5657H=0BD91H,OF=1(有溢出),CF=0(无进位)11. 将DL中的内容循环右移,已知移位前CL=9,要使其移位前后内容保持不变,应选用的指令是。
解答:将DL中的内容循环右移,已知移位前CL=9,要使其移位前后内容保持不变,应选用的指令是RCL或RCR 。
12.串操作指令的两个隐含的指针寄存器是。
解答:串操作指令的两个隐含的指针寄存器是 SI和DI寄存器。
13. 指令REP MOVSB重复执行的条件为。
解答:指令REP MOVSB重复执行的条件为 CX≠0 。
14. 串操作指令在内存中可以实现信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆盖,应设置。
解答:串操作指令在内存中可以实现信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆盖,应设置 DF=0 。
15. 将下列程序补充完整:程序的功能是在数据段ADDR1地址处有200个字节,要传送到数据段地址ADDR2处。
MOV AX,SEG ADDR1MOV DS,AXMOV ES,MOV SI,MOV DI,OFFSET ADDR2MOV ,200CLDREP解答:在存储器中实现信息块的搬家,使用重复前缀,必须先给CX赋值重复的次数。
如果信息块的长度是多少个字节,用MOVSB传送时,则将此字节数赋给CX作重复次数;若用MOVSW传送时,则将此字节数÷2赋给CX作重复次数。
程序要求200个字节搬移,指令中使用的重复次数为200,由此使用REP MOVSB 指令,完整的程序如下:MOV AX,SEG ADDR1MOV DS,AXMOV ES, AXMOV SI, OFFSET ADDR1MOV DI,OFFSET ADDR2MOV CX ,200CLDREP MOVSB16. 若指令JMP ADDR1的机器码为E93512H,此指令的CS=1500H,IP=2400H,则目标ADDR1与本指令之间的位移量为,执行本指令时,IP的当前值为,本指令执行后,CPU转移至CS:IP 为。
解答: JMP指令是无条件转移指令,JMP ADDR1的机器码为E93512H,这是三字节指令,E9H表示操作码,8086系统中,高地址存放的是高字节,低地址则是低字节,因此1235H是操作数,表示本指令与ADDR1之间的位移量为1235H。
该指令是三字节指令,执行指令时,当前IP=2400H+3=2403H。
由目标偏移地址=当前IP值+指令中的位移量=2403H+1235H=3638H。
因此,执行该指令后,CPU转移至1500H:3638H处。
本题的正确答案为:若指令JMP ADDR1的机器码为E93512H,此指令的CS=1500H,IP=2400H,则目标ADDR1与本指令之间的位移量为 1235H ,执行本指令时,IP的当前值为 2403H ,本指令执行后,CPU转移至CS:IP为 1500H:3638H 。
17. 阅读程序并补充完整:以TAB为首地址的100个ASCII码字符添加奇偶校验位(bit7),使每个字节中的“1”的个数为偶数,再顺序输出到10H号端口。
MOV SI,OFFSET TABMOV CX,①L2: MOV AL,[SI]AND AL,②③ L1OR AL,④L1: OUT 10H, ALINC ⑤LOOP L2解答:传送类指令不影响标志位,可以使用AND AL,AL或AND AL,0FFH指令,它对AL的内容无影响,但影响标志位。
为使每个字节中的“1”的个数为偶数,,用使用进行JP条件判断,如果PF=1,则转到L2出,否则在最高位加1,可凑成偶数。
完整的程序如下:MOV SI,OFFSET TABMOV CX, 100L2: MOV AL,[SI]AND AL, 0FFH 或ALJP L1OR AL, 80HL1: OUT 10,HALINC SILOOP L218. 设AX=8000H,BX=0FFFFH,执行CMP AX,BX后,写出两条能引起转移的条件转移指令①、②。
解答:AX=8000H,BX=0FFFFH,执行CMP AX,BX后CF=1(有借位),OF=0(没有溢出),ZF=0(结果不为0),SF=1(结果为负数,最高位为1),PF=0(第8位有1个1)。
因此能引起只要的条件指令有JC、JNO、JNZ等。
本题的正确答案为:设AX=8000H,BX=0FFFFH,执行CMP AX,BX后,写出两条能引起转移的条件转移指令 JC 、 JNZ 。
19. 汇编语言的调试过程如下:建立______以为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DYBUG调试程序,调试可执行目标程序。
解答:汇编语言的调试过程如下:建立 .ASM 以为扩展名的源文件;生成以 .OBJ 为扩展名的目标文件;生成以 .EXE 为扩展名的可执行文件;使用DYBUG调试程序,调试可执行目标程序。
20. 宏汇编语言程序被汇编时,_____语句产生代码指令,______语句不产生代码指令, ______语句可能产生也可能不产生代码指令。
解答:宏汇编语言程序被汇编时,指令性语句产生代码指令,伪指令语句不产生代码指令,宏指令语句可能产生也可能不产生代码指令。
21. 已知VAR1是字变量,指令MOV AX,VAR1的功能是将送到AX中;指令MOV AX,OFFSET VAR1的是将送到AX,其功能和指令 AX,VAR1是相同的。
解答:已知VAR1是字变量,指令MOV AX,VAR1的功能是将 VAR1的内容送到AX中;指令MOV AX,OFFSET VAR1的是将 VAR1的偏移量送到AX,其功能和指令 LEA AX,VAR1是相同的。