东北大学汇编实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(附录二)
汇编语言程序设计
实验报告
实验1 数据传送指令
1、实验目的:了解和掌握 MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。
2、实验要求:
(Ⅰ)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H 分别送给EAX、EBX、ECX、EDX四个寄存器。
记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 00000000 、 EDX= 01361005
操作后 EAX= 000019E0 、 EBX= 00003F56 、 ECX= 0000AF37 、 EDX= 00009A81
操作过程中所用到的指令:
INCLUDE Irvine32.inc
.code
main PROC
call DumpRegs
mov eax,19E0H
mov ebx,eax
mov ecx,ebx
mov edx,ecx
call DumpRegs
exit
main ENDP
END main
(Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX 三个寄存器。
记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 000000000 、 EDX= 013C1005
操作后 EAX= 000019E0 、 EBX= 000019E0 、 ECX= 000019E0 、 EDX= 000019E0
操作过程中所用到的指令:
INCLUDE Irvine32.inc
.code
main PROC
call DumpRegs
mov eax,19E0H
mov ebx,eax
mov ecx,ebx
mov edx,ecx
call DumpRegs
exit
main ENDP
END main
(2)对EAX、EBX、ECX、EDX四个寄存器进行出入堆栈的操作。
(Ⅰ)将EAX、EBX、ECX、EDX四个寄存器的内容依次压入堆栈中,注意观察栈指针寄存器和堆栈内容的变化。
记录:压入EAX前 ESP= 003AF8E8 ,(ESP)= 750A339A
压入EAX后 ESP= 003AF8E4 ,(ESP)= 750A3388
压入EBX前 ESP= 003AF8E4 ,(ESP)= 750A3388
压入EBX后 ESP= 003AF8E0 ,(ESP)= 7EFDE000
压入ECX前 ESP= 003AF8E0 ,(ESP)= 7EFDE000
压入ECX后 ESP= 003AF8DC ,(ESP)= 00000000
压入EDX前 ESP= 003AF8DC ,(ESP)= 00000000
压入EDX后 ESP= 003AF8D8 ,(ESP)= 00241005
操作过程中所用到的指令:INCLUDE Irvine32.inc
.code
main PROC
call DumpRegs
mov eax,[esp]
call DumpRegs
push eax
call DumpRegs
push ebx
call DumpRegs
push ecx
call DumpRegs
push edx
call DumpRegs
exit
main ENDP
END main
(Ⅱ)将堆栈中的内容依次弹出到EAX、EBX、ECX、EDX四个寄存器,注意观察栈指针寄存器和堆栈内容的变化。
记录:弹出到EAX前 ESP= 003AF8D8 ,(ESP)= 00241005
弹出到EAX后 ESP= 003AF8DC ,(ESP)= 00000000
弹出到EBX前 ESP= 003AF8DC ,(ESP)= 00000000
弹出到EBX后 ESP= 003AF8E0 ,(ESP)= 7EFDE000
弹出到ECX前 ESP= 003AF8E0 ,(ESP)= 7EFDE000
弹出到ECX后 ESP= 003AF8E4 ,(ESP)= 750A3388
弹出到EDX前 ESP= 003AF8E4 ,(ESP)= 750A3388
弹出到EDX后 ESP= 003AF8E8 ,(ESP)= 750A339A
操作过程中所用到的指令:pop eax
call DumpRegs
pop ebx
call DumpRegs
pop ecx
call DumpRegs
pop edx
call DumpRegs
exit
main ENDP
END main
(3)已知EAX=3F56H,分别利用存储器直接寻址方式和存储器间接寻址方式,将EAX寄存器的内容送到内存单元中。
(Ⅰ)存储器直接寻址方式
记录:送出到EAX前 EAX= 00003F56,[var]=00000000
送出到EAX后 EAX= 00003F56 ,[var]=00003F56
操作过程中所用到的指令:
include Irvine32.inc
.data
var dword ?
.code
main proc
mov eax,var
call dumpregs
mov eax,3f56h
call dumpregs
mov var,eax
call dumpregs