汇编语言练习题答案
- 格式:doc
- 大小:45.00 KB
- 文档页数:3
1、有两个16位字1EE5H 和2A3CH 分别存放在8086微机的存储器的000B0H 和000B3H 单元中,请用图表示出它们在存储器的存放情况。
并读出000B1H 字单元的内容。
答案:寄存器的存储情况如下:
2、在实模式下,段地址和偏移地址为3017:000A 的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A 和3010:007A 呢?
答案:段地址和偏移地址为3017:000A 的存储单元的物理地址是:3017AH
段地址和偏移地址是3015:002A 的存储单元的物理地址是:3017AH
段地址和偏移地址是3010:007A 的存储单元的物理地址是:3017AH
这个题目充分验证了结论:同一个内存单元的逻辑地址和物理地址是多对一的关系。
3、如果一个程序已加载到内存,执行之前(CS )=0A7F0H ,(IP )=2B40H ,试问该程序的第一个字的物理地址是多少?
答案:PA=(CS)*16+(IP)=0A7F00H+2B40H=0AAA40H
4、根据以下要求写出相应的汇编语言指令。
(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。
(2)把数0B5H 与(AL )相加,并把结果送回AL 中。
(3)将地址为2B00:0008的内存单元中的字型数据装入AX 寄存器。
答案:
(1)ADD DX,AX
(2)ADD AL,0B5H
(3)MOV BX,2B00H
MOV DS,BX MOV AX,[8] 5、指出下列指令的错误在哪里:
(1)MOV AH,BX (2)MOV CS,AX
(3)ADD AX,DS (4)POP 123AH
答案:
(1)操作数类型不匹配
(2)传送指令中,寄存器CS 不能作为目的操作数
(3)加法指令不能对寄存器DS 进行操作
(4)出栈指令的操作数不能是常量,可以是除CS 之外的段寄存器、16位的通用 寄存器以及字单元。
000B0H
000B1H 000B2H 000B3H 000B4H
6、已知(SS)=0FFA0H,(SP)=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH 指令,再执行一条POP指令。
试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
答案:(1)8057入栈如下图所示
(2) 0F79入栈如下图所示
(3)
7、编写源程序实现以下功能:将10000h开始的16个内存单元的内容转移到20000h开始的16个内存单元中,同时将10000h开始的16个内存单元清零。
答案:
ASSUME CS:CODE
CODE SEGMENT
START: MOV AX,1000H
MOV DS,AX
MOV AX,2000H
MOV ES,AX
MOV BX,0
MOV CX,10H
S: MOV AL,[BX]
MOV ES:[BX],AL
MOV BYTE PTR [BX],0
INC BX
LOOP S
CODE ENDS
END START
或者是:
ASSUME CS:CODE
CODE SEGMENT
START: MOV AX,1000H
MOV DS,AX
MOV AX,2000H
MOV ES,AX
MOV BX,0
MOV CX,8H
S: MOV AX,[BX]
MOV ES:[BX],AX
MOV WORD PTR [BX],0
ADD BX,2
LOOP S
CODE ENDS
END START。