微机原理与接口第二章答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.34

1)IP不可访问,应为:IP不可编程访问,或IP不可作为源操作数出现在普通指令中。

3)SI+2属于对寄存器的非法使用。而不仅仅是数据类型不匹配的问题。

7)乘数不能为立即数,(或再加上:且MUL指令中操作数应为无符号数)。

10)操作数的数据类型不匹配。

3.36

出错:SAL AL,1(AX=00BBH)结果为AL=76H,而不是F6H。此处,算术左移无法保证符号位不发生改变,溢出了。

另:AL作为独立使用的寄存器,它的左移不影响AH寄存器。

3.47

(3)逻辑移位,高4位已补0,无需通过AND AL 0FH实现清0。不宜采用算术移位。第4小题问题相同。

3.50

问题:语句第2行,因不满足条件而未执行。但DONE语句标号后的指令在程序的最后仍会执行。结果为7676H。

3.67 问题较多。

试写出一个程序段,用CL中的数据除BL中的数据,然后将结果乘2,最后的结果是存入DX寄存器中的16位数。

问题:MOV AX,BL(或MOV AX,CL)

1)CL是除数,有的同学把BL当成了除数。

2)数据类型不匹配。

3)CBW的误用。

4)乘数不能是立即数。

5)将所得的商直接算术(逻辑)左移1位,因商保存在AL中。

①MOV AL,BL

MOV AH,0 ;或AND AX,00FFH 或:CBW(有符号除法)DIV CL(或IDIV CL ;和CBW连用)

MOV CL,2 ;SAL AX,1(×)(因AH中放的是余数)MUL CL (或:MOV AH,0 SHL AL,1或IMUL CL)MOV DX,AX

3.70

6)我们不知道WAIT1(用户定义的变量)的数据类型,为保险起见,应描述为:

AND BYTE PTR[WAIT1],AL(若WAIT1为字类型,则操作数类型不匹配)

AND [BX],AL(这样没有问题,由AL隐含指明为字节操作)3.78

1)JMP [DI]:该指令为段内间接转移。DI中的内容为指向存储单元的偏移地址,从该地址开始的2个字节中存放着要跳转到的指令的偏移地址,执行指令时,将该偏移地址(DS:DI和DS:DI+1)中的内容送IP,段地址不变。

2) JMP FAR PTR[DI]:该指令为段间间接远转移。DI中的内容为指向存储单元的偏移地址,从该地址开始的4个字节中存放着要跳转到的指令的目标地址,其中,前2个字节为偏移地址,后2个字节为段地址。执行指令时,将该偏移地址送IP,段地址送CS。

3.79

1)完成100个数的传送问题不大,只是部分同学忘了用CLD(或STD)指令指定串操作的方向。

2)第2问问题较多:①题目的意思是修改目标串;因此,不应对[SI]进行操作;SCASB指令是对[DI]单元操作的。

②目标串中等于AL中字符的单元,可能不止一个,因此,简单地用 REPNE SCASB不合适,碰到第一个符合要求的字符,就不再检索了。

③串传送结束后,SI和DI均已改变,若直接按现行[DI]检索,是不对的。

④有同学直接用LEA DI,2000H获取目标串的首地址,是不可以的。2000H为立即数。实际上,在目前版本的汇编程序中,LEA DI,[2000H]都被认为是不合法的。

参考程序段如下:

CLD

MOV CX ,100

MOV SI ,6180H MOV DI ,2000H

REP MOVSB

DEC DI

STD ;也可直接用MOV DI ,2000H MOV CX ,100

SCAN :SCASB

JNZ NEXT

INC DI

MOV BYTE PTR [DI],‘ ’(或20H

DEC DI

NEXT :DEC CX

LOOP SCAN

MOV AH ,4CH ;终止程序,返回DOS INT 21H

相关文档
最新文档