文档库 最新最全的文档下载
当前位置:文档库 › 汇编与接口第三章作业

汇编与接口第三章作业

汇编与接口第三章作业
汇编与接口第三章作业

1.已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]~[20103H]依次存放12 24 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。

(1) MOV AX, 1200H

解:AX=1200H

(3) MOV AX, [1200H]

解:物理地址=D S×16+1200H=20000H+1200H=21200H,所以AX=4C2AH

(5) MOV AX, [BX+1100H]

解:物理地址=D S×16+BX+1100H=20000H+0100H+1100H=21200H ,所以AX=4C2AH

(7) MOV AX, [BX][SI+1100H]

解:物理地址=D S×16+BX+SI+1100H=20000H+0100H+0002H+1100H=21202H ,所以AX=65B7H (2) MOV AX, BX

解:AX=0100H

(4) MOV AX, [BX]

解:物理地址=D S×16+BX=20000H+0100H=20100H,所以AX=2412H

(6) MOV AX,[BX][SI]

解:物理地址=D S×16+BX+SI=20000H+0100H+0002H=20102H,所以AX=7856H

2.指出下列指令错误

(1) MOV CX, DL

答:数据类型不匹配,CX是16位,DL是8位。

(2) MOV IP, AX

答:指令指针不能直接修改。

(3) MOV ES, 1234H

答:段地址寄存器不能直接置数。

(4) MOV ES, DS

答:段地址DS不能做源操作数。

(5) MOV AL, 300

答:300大于255,AL是8位的,最多只能存255

(6) MOV [SP], AX

答:SP不能做间接寻址寄存器。

(7) MOV AX , BX+DI

答:基址变址寻址必须打[]。

(8) MOV 20H, AH

答:立即数不能做目的地址单元。

3.已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存放在于以TABEL为首地址(设为200H)的连续区域中。对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。

LEA BX,TABLE ;取表的首地址送BX,执行后(BX)=200H

MOV AL,8 ;立即数8送AL,执行后,(AL)=8

XLAT ;查表,将表首地址+8((BX)+(AL))所对应单元内容送AL,

;执行后,(AL)=12H(8所对应的格雷码)

4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?

答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针SP 与SS 共同决定。 原则是:先进后出,

两个操作:入栈、出栈,对应指令:PUSH(入栈)、POP(出栈)。

5.已知SS=FFA0H ,SP=00B0H ,画图说明执行下列指令序列时,堆栈区和SP 的内容如何变化? MOV AX , 8075H PUSH AX MOV AX , 0F79H PUSH AX

POP BX POP [BX]

解:

8.请分别用一条汇编语言指令完成如下功能:

(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器。 解:ADD DX, BX

FFA0:00AE SP → FFA0:00AF FFA0:00B0

FFA0:0000

执行完

MOV AX , 8075H PUSH AX 指令后

SP=00AEH

FFA0:00AC SP →FFA0:00AD FFA0:00AE FFA0:00AF FFA0:00B0

FFA0:0000

再执行完

MOV AX , OF79H PUSH AX 指令后 SP=00ACH

FFA0:00AE SP → FFA0:00AF FFA0:00B0

FFA0:0000 再执行完

POP BX 指令后 SP=00AFH

FFA0:00AE FFA0:00AF

FFA0:00B0 SP →

FFA0:0000

再执行完

POP [BX] 指令后 SP=00B0H

(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送AL中。

解:ADD AL, [BX+SI] 或ADD AL, [BX][SI]

(3)用寄存器BX和02BH的寄存器相对寻址方式,把存储器的一个字和CX寄存器的内容相加,并把结果送回存储器中。

解:ADD [BX+02BH] ,CX 或ADD 02BH [BX] ,CX

(4)把数0A0H与AL寄存器内容相加,并把结果送AL中。

解:ADD AL, 0A0H

10.指出下列指令错误

(1)XCHG [SI], 30H

答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。

(2)POP CS

答:CS不能作为寻址寄存器使用

(3)SUB [SI], [DI]

答:算术运算指令中的两个操作数不能同时都在内存中

(4)PUSH AH

答:PUSH指令中的操作数必须是16位操作数,AH是8位

(5)ADC AX, DS

答:DS不能做源操作数,

(6)OUT DX, AH

答:只能使用AL(当端口数据位是8位)或AX(端口数据位是16位)与端口交换数据(7)IN AL 3FCH

答:端口地址大于255时,必须有DX寄存器间接寻址。

20.假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接转移指令后,转移的目的地址是什么?

(1) JMP BX

(2) JMP TABLE[BX]

(3) JMP [BX][SI]

解:(1)JMP BX,目标地址的偏移量在BX中,所以转移的目的地址是CS:1256H(也可以直接写成有效地址IP=1256H)。

(2) JMP TABLE[BX],目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ TABLE中,所对应的物理地址=DS×16+(BX)+TABLE=20000H+1256H+20A1H=232F7H,该单元存放的内容为3280H,所以JMP TABLE[BX] 转移的目的地址是CS:3280H(也可以直接写成有效地址IP=3280H)

(3)JMP [BX][SI] 目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ (SI)中,所对应的物理地址=DS×16+(BX)+(SI)=20000H+1256H+528FH=264E5H,该单元存放的内容为4500H,所以JMP TABLE[BX] 转移的目的地址是CS:4500H(可以直接写成有效地址IP=4500H)。

23.假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断:

(1)若DX>DI,转到ABOVE执行;

(2)若AX>SI,转到GREATER执行;

(3)若CX=0,转到ZERO执行;

(4)若AX-SI产生溢出,转到OVERFLOW执行;(5)若SI≤AX,转到LESS_EQ执行;

(6)若DI≤DX,转到BELOW_EQ执行。

解:(1)CMP DX,DI

JA ABOVE

(2)CMP AX,SI

JG GREATER

(3)CMP CX,0

JE ZERO

(4)CMP AX,SI

JO OVERFLOW

(5) CMP SI,AX

JLE LESS_EQ

(6) CMP DI,DX

JBE BELOW_EQ

相关文档
相关文档 最新文档