东北大学汇编实验Word文档格式.docx
《东北大学汇编实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学汇编实验Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
评定日期
东北大学软件学院
实验1数据传送指令
1、实验目的:
了解和掌握MOVPUSHPOPXCH四条指令的作用和在编程中的用法。
2、实验要求:
EDX9个寄存器。
INCLUDEIrvine32.inc.code
mainPROC
callDumpRegsmoveax,19E0Hmovebx,3F56Hmovecx,0AF37Hmovedx,9A81HcallDumpRegsexit
mainendp
ENDmain
EDX=00401000
INCLUDEIrvine32.inc.codemainPROC
callDumpRegsmoveax,19E0Hmovebx,eaxmovecx,ebxmovedx,ecxcallDumpRegsexit
(2)对EAXEBXECXED)四个寄存器进行出入堆栈的操作。
(I)将EAXEBXECXEDX四个寄存器的内容依次压入堆栈中,注意观察栈指针寄存器和堆栈内容的变化。
(ESP=75C5919F
(ESP=00000000
(ESP=FFFFC000
记录:
压入EAX前ESP=0018FF90,
压入EAX后ESP=0018FF8C
压入EBX前ESP=0018FF8C
压入EBX后ESP=0018FF88,
压入ECX^ESP=0018FF88,
压入ECX后ESP=0018FF84,
压入EDX^ESP=0018FF84,
压入EDX后ESP=0018FF80,
操作过程中所用到的指令:
callDumpRegsmoveax,[esp]callDumpRegspusheax
callDumpRegspushebx
callDumpRegs
pushecxcallDumpRegspushedx
exitmainendp
ENDmain
(n)将堆栈中的内容依次弹出到EAXEBXECXED潮个寄存器,注意观察栈指针寄存
器和堆栈内容的变化。
弹出到EAX前ESP=0018FF90,(ESP=00000000
弹出到EAX后ESP=0018FF94,(ESP=00000000
(ESP
=00000000
=E18A40B7
=FFFFF801
includeIrvine32.inc
.code
mainproc
movesi,[esp]
pusheax
pushebx
pushecx
pushedx
popedx
movesi,[esp]callDumpRegs
popebx
弹出至yEBX前ESP=0018FF94,弹出至卩EBX后ESP=0018FF98,弹出至卩ECX前ESP=0018FF98,弹出至卩ECX后ESP=0018FF9C,弹出至yEDX前ESP=0018FF9C,弹出至yEDX后ESP=0018FFAQ操作过程中所用到的指令:
callDumpRegspopeax
exit
endmain
(3)已知EAX=3F56HECX=4690H,利用交换指令交换这两个寄存器的内容。
ECX=00004690
ECX=00003F56
交换前EAX=00003F56
交换后EAX=00004690
操作过程中所用到的指令:
IncludeIrvine32.inc
moveax,3F56Hmovecx,4690HcallDumpRegsxchgeax,ecxcallDumpRegsexit
mainENDP
实验二逻辑指令、跳转指令与分支程序设计
了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的功能和作用,以及此类
指令的使用方法。
具体了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的使用和在使用时应注意的问题,学习分支型程序设计的一般方法。
(1)在DEBU系统状态下,分别编制、调试并记录以下逻辑指令程序段的每一条指令的运行情况:
(I)
moval,41|al=29H
oral,20|al=3DH
(n)
moval,66
Ial=42H
andal,0df
Ial=00H
(川)
movEAX,5678
IEAX=0000162EH
xorEAX,EAX
IEAX=00000000H
(W)
movEAX,0ff00
IEAX=0000FF00H
notEAX
IEAX=FFFF00FFH
(V)
movEAX,1234
IEAX=000004D2H
testEAX,1
IEAX=000004D2HSF=0ZF=1OF=0
testEAX,2
IEAX=000004D2HSF=0ZF=0OF=0
testEAX,4
testEAX,8
testEAX,10
testEAX,20
testEAX,40
testEAX,80
test指令的作用是将原操作数与目的操作数相与,但结果不送会目的操作数,只改变标
志位,并不修改操作数。
(2)已知DATA单元开始存放三个带符号数,编制程序,检查三个数据是否同号,若同时为正,则在显示器上显示“+”;
同时为负,则显示“-”;
否则显示空格“”。
要求:
分别用三组数据(同时为正,同时为负,异号)调试程序,验证程序的正确性。
.data
interraysdword23h,23h,-23h
movedi,OFFSETinterray
moveax,[edi]
andeax,80000000h
moveax,[edi+4]
moveax,[edi+8]
popeax
popecx
jnzL1
cmpeax,ebx
jneL2
cmpeax,ecx
moval,'
+'
callWriteCharexit
L1:
-'
L2:
'
callWriteChar
实验三算术运算类指令、移位指令及循环程序设计
1、实验目的:
了解和掌握加、减、乘、除指令的在程序设计中的用法和应注意的问题,了解和掌握移
位指令的功能、作用和方法。
了解和掌握循环控制类指令的功能、作用和方法。
学会循
环程序设计的方法。
学习汇编语言输出输入语句的设计。
具体了解和掌握算术类指令、移位指令和循环控制类指令的使用,以及在使用时应注意
的问题,学习循环程序设计的
般方法。
条指令的
(1)在DEBU系统状态下,分别编制、调试并记录以下加、减程序段的每
运行情况,查看寄存器的结果:
MOVEAX,2389
MOVEBX,OCEDFH
ADDEAX,EBX
MOVEBX,0CEDFH
SUBEAX,EBX
ADDAH,BH
IEAX=00000955H
IEBX=0000CEDFH
IEAX=0000D834H
IEAX=FFFF3A76H
IAH=D7BH=CE
EBX=0000CEDFH
ADDAL,BL
ADCAL,BL
IAL=34BL=DF
IAL=34BL=DFEFL=00000213
(2)在DEBU系统状态下,分别编制、调试并记录以下乘、除程序段的每一条指令的运行情况:
MOVAL,23
MOVBL,0CEH
MULBL
MOVAX,2389
MOVBX,0CEDFH
MULBX
DIVBL
MOVDX,0856
DIVBX
IAL=17H
IBL=CEH
IAX=1282HOV=1
IAX=0955H
IBX=CEDFH
IDX=078AHAX=870BHCF=1
IBL=0CEH
IAH=7BHAL=0BH
IDX=0358H
IAX=0423HDX=44D8H
(3)在DEBU系统状态下,运行情况:
movEAX,420
shlEAX,1
movEAX,240
movcl,4
shlEAX,cl