东北大学汇编实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档