大连理工大学 计算机原理 习题3答案 联系客服

发布时间 : 星期三 文章大连理工大学 计算机原理 习题3答案更新完毕开始阅读d2772de6ee06eff9aff80787

(1) 在8086CPU的下列寄存器中,可用作寄存器间接寻址的有(ACDE) A. SI B. CX C. BX D. BP E. DI

(2) 设SP=50H, 执行指令RET 0004H后,寄存器SP的内容是(E) A. 54H B. 50H C. 4EH D. 4CH E.58H 18. 简答题:

1)无符号数比较指令有哪些?如何通过标志位进行判断的?

答:JB/JNAE/JC ;CF=1;小于/不大于转移JNB/JAE/JC ;CF=0;高于等于/不高于转移 JBE short_label;小于等于转移JNA short_label;不大于转移:测试条件:CF|ZF=1 JNBE short_label;不小于等于 ;转移JA short_label;大于转移:测试条件:CF|ZF=0 2)有符号数比较指令有哪些?如何通过标志位进行判断的?

答:JL short_label;小于转移JNGE short_label;不大于等于转移:测试条件:SF^OF=1

JNL short_label;不小于转移JGE short_label; 大于等于转移:测试条件:SF^OF=0 JNLE short_label;不小于等于转移JG short_label; 大于转移:测试条件:(SF^OF)|ZF=0

JLE short_label; 小于等于转移JNG short_label;不大于转移:测试条件:(SF^OF)|ZF=1

3)试述传送类指令有哪些?简述lea、lds、les、Xlat指令的功能? 答:mov ,push, pop, xchg ,in, out, xlat, lea, lds, les, lahf, sahf, pushf, popf

Lea:有效地址传送指令;lds将源操作数指定的四个字节传送到指定的寄存器及DS寄存器中;les将源操作数指定的四个字节传送到指定的寄存器及ES寄存器中;xlat:(bx+al)=>al

4)简述MUL、IMUL、DIV、IDIV、CBW、CWD指令的功能?

答:MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),

DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或 商回送AX,余数回送DX, (字运算).

CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)

5)试述逻辑移位操作指令有哪些?如何使用? 答:SHL 逻辑左移.

SAL 算术左移.(=SHL) 操作数整体左移,每次的最高位移到CF,空余位补0 SHR 逻辑右移. 操作数整体右移,每次的最低位移到CF,空余位补0 SAR 算术右移. 操作数整体右移,每次的最低位移到CF,空余位补符号数 ROL 循环左移. 操作数整体左移,每次的最高位移到CF,最低位用原来最高位补

ROR 循环右移. 操作数整体右移,最低位移到CF,最高位用原来最低位补 RCL 通过进位的循环左移. 类似ROL循环左移,但CF加入到循环圈中 RCR 通过进位的循环右移. 类似ROR循环左移,但CF加入到循环圈中 6)试述串操作指令有哪些?如何使用?

答:MOVS 串传送指令MOVSB:ES : [DI] ← DS : [SI],SI←SI±1,DI←DI±1 MOVSW:ES : [DI] ←DS : [SI],SI←SI±2,DI←DI±2使用前缀REP,可完成多次数据传送

STOS 存入串指令STOSB:ES : [DI] ← AL,DI←DI±1;STOSW:ES : [DI] ← AX,DI←DI±2可使用REP前缀

LODS 从串中取数LODSB: AL ← DS : [SI],SI←SI±1;LODSW:AX ←DS : [SI] ,SI←SI±2

SCAS 串扫描指令,在数据中查找AL或AX中的内容SCASB:AL - ES : [DI],DI←DI±1;SCASW:AX - ES : [DI],DI←DI±2可使用REPE/REPZ 或 REPNE/REPNZ,仅影响标志位

CMPS 串比较指令,两个MEM操作数的比较,源操作数-目的操作数CMPSB:DS : [SI] - ES : [DI],SI←SI±1,DI←DI±1;CMPSW:DS : [SI] - ES : [DI],SI←SI±2,DI←DI±2可使用REPE / REPZ 或 REPNE / REPNZ,该指令只影响标志位,不保存结果

7)简述RET、RET IMM16、IRET指令的功能?

答:RET子程序返回指令,执行时,从堆栈顶部弹出返回地址

RET IMM16带立即数(0-FFFFH范围的任何偶数)返回指令执行时,从堆栈顶部弹出返回地址,再使SP加上立即数,

IRET中断返回,执行时,从堆栈中依次弹出断点地址的IP、CS和FLAG 8)简述LOOP、LOOPE、LOOPNE、JCXZ指令的功能? 答:LOOP TARGET — 循环指令,循环次数由CX决定

LOOPZ / LOOPE TARGET — 条件循环指令,执行时,在LOOP指令的基础上,还需判断ZF,若CX != 0 且 ZF = 1则循环

LOOPNZ / LOOPNE TARGET 执行时,在LOOP指令的基础上,还需判断ZF若CX != 0 且 ZF = 0则循环

JCXZ short_label ;CX=0则转移,测试条件:CX=0

9)简述根据子程序调用范围和寻址方式,说明CALL指令使用功能?

答:CALL TARGET子程序调用指令类似转移指令,也有4种形式 CALL 1000H ;段内直接转移,调用地址在指令中给出 CALL AX

;段内间接转移,调用地址在AX中给出

CALL 2000H:0200H ;段间直接转移,指令中直接给出调用地址的段地址和偏移量

CALL DWORD PTR [DI] ;段间间接转移,调用地址在内存单元中 执行该指令时,会将下一条指令的地址压入堆栈,该地址称为返回地址 段内调用:只将返回地址的偏移量压入堆栈

段间调用:将返回地址的段地址和偏移量压入堆栈,先压CS,后压IP 实际使用时CALL指令后面直接跟子程序名