东北大学汇编实验.docx

上传人:b****5 文档编号:2879663 上传时间:2022-11-16 格式:DOCX 页数:14 大小:79.82KB
下载 相关 举报
东北大学汇编实验.docx_第1页
第1页 / 共14页
东北大学汇编实验.docx_第2页
第2页 / 共14页
东北大学汇编实验.docx_第3页
第3页 / 共14页
东北大学汇编实验.docx_第4页
第4页 / 共14页
东北大学汇编实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

东北大学汇编实验.docx

《东北大学汇编实验.docx》由会员分享,可在线阅读,更多相关《东北大学汇编实验.docx(14页珍藏版)》请在冰豆网上搜索。

东北大学汇编实验.docx

东北大学汇编实验

课程编号:

B080103020

 

《汇编语言程序设计》

实验报告

 

姓名

学号

班级

指导教师

实验名称

数据传送、分支与循环结构程序设计实验

开设学期

2014-2015第一学期

开设时间

第1周——第10周

报告日期

2014年11月6日

评定成绩

评定人

评定日期

东北大学软件学院

实验1数据传送指令

1、实验目的:

了解和掌握MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。

2、实验要求:

(Ⅰ)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H分别送给EAX、EBX、ECX、EDX四个寄存器。

记录:

操作前EAX=75C59191、EBX=7FFDE000、ECX=00000000、EDX=00401000

操作后EAX=000019E0、EBX=00003F56、ECX=0000AF37、EDX=00009A81

操作过程中所用到的指令:

INCLUDEIrvine32.inc

.code

mainPROC

callDumpRegs

moveax,19E0H

movebx,3F56H

movecx,0AF37H

movedx,9A81H

callDumpRegs

exit

mainendp

ENDmain

(Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX三个寄存器。

记录:

操作前EAX=75C59191、EBX=7FFDE000、ECX=00000000、EDX=00401000

操作后EAX=000019E0、EBX=000019E0、ECX=000019E0、EDX=000019E0操作过程中所用到的指令:

INCLUDEIrvine32.inc

.code

mainPROC

callDumpRegs

moveax,19E0H

movebx,eax

movecx,ebx

movedx,ecx

callDumpRegs

exit

mainendp

ENDmain

(2)对EAX、EBX、ECX、EDX四个寄存器进行出入堆栈的操作。

(Ⅰ)将EAX、EBX、ECX、EDX四个寄存器的内容依次压入堆栈中,注意观察栈指针寄存器和堆栈内容的变化。

记录:

压入EAX前ESP=0018FF90,(ESP)=75C5919F

压入EAX后ESP=0018FF8C,(ESP)=00000000

压入EBX前ESP=0018FF8C,(ESP)=00000000

压入EBX后ESP=0018FF88,(ESP)=00000000

压入ECX前ESP=0018FF88,(ESP)=00000000

压入ECX后ESP=0018FF84,(ESP)=00000000

压入EDX前ESP=0018FF84,(ESP)=00000000

压入EDX后ESP=0018FF80,(ESP)=FFFFC000

操作过程中所用到的指令:

INCLUDEIrvine32.inc

.code

mainPROC

callDumpRegs

moveax,[esp]

callDumpRegs

pusheax

callDumpRegs

pushebx

callDumpRegs

pushecx

callDumpRegs

pushedx

callDumpRegs

exit

mainendp

ENDmain

(Ⅱ)将堆栈中的内容依次弹出到EAX、EBX、ECX、EDX四个寄存器,注意观察栈指针寄存器和堆栈内容的变化。

记录:

弹出到EAX前ESP=0018FF90,(ESP)=00000000

弹出到EAX后ESP=0018FF94,(ESP)=00000000

弹出到EBX前ESP=0018FF94,(ESP)=00000000

弹出到EBX后ESP=0018FF98,(ESP)=00000000

弹出到ECX前ESP=0018FF98,(ESP)=00000000

弹出到ECX后ESP=0018FF9C,(ESP)=E18A40B7

弹出到EDX前ESP=0018FF9C,(ESP)=E18A40B7

弹出到EDX后ESP=0018FFA0,(ESP)=FFFFF801

操作过程中所用到的指令:

 

includeIrvine32.inc

.code

mainproc

movesi,[esp]

callDumpRegs

pusheax

movesi,[esp]

callDumpRegs

pushebx

movesi,[esp]

callDumpRegs

pushecx

movesi,[esp]

callDumpRegs

pushedx

 

popedx

movesi,[esp]

callDumpRegs

popecx

movesi,[esp]

callDumpRegs

popebx

movesi,[esp]

callDumpRegs

popeax

movesi,[esp]

callDumpRegs

exit

mainendp

endmain

 

(3)已知EAX=3F56H,ECX=4690H,利用交换指令交换这两个寄存器的内容。

记录:

交换前EAX=00003F56,ECX=00004690

交换后EAX=00004690,ECX=00003F56

操作过程中所用到的指令:

IncludeIrvine32.inc

.code

mainPROC

moveax,3F56H

movecx,4690H

callDumpRegs

xchgeax,ecx

callDumpRegs

exit

mainENDP

ENDmain

实验二逻辑指令、跳转指令与分支程序设计

1、实验目的:

了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的功能和作用,以及此类指令的使用方法。

2、实验要求:

具体了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的使用和在使用时应注意的问题,学习分支型程序设计的一般方法。

(1)在DEBUG系统状态下,分别编制、调试并记录以下逻辑指令程序段的每一条指令的运行情况:

(Ⅰ)

moval,41┃al=29H

oral,20┃al=3DH

(Ⅱ)

moval,66┃al=42H

andal,0df┃al=00H

(Ⅲ)

movEAX,5678┃EAX=0000162EH

xorEAX,EAX┃EAX=00000000H

(Ⅳ)

movEAX,0ff00┃EAX=0000FF00H

notEAX┃EAX=FFFF00FFH

(Ⅴ)

movEAX,1234┃EAX=000004D2H

testEAX,1┃EAX=000004D2HSF=0ZF=1OF=0

testEAX,2┃EAX=000004D2HSF=0ZF=0OF=0

testEAX,4┃EAX=000004D2HSF=0ZF=1OF=0

testEAX,8┃EAX=000004D2HSF=0ZF=1OF=0

testEAX,10┃EAX=000004D2HSF=0ZF=0OF=0

testEAX,20┃EAX=000004D2HSF=0ZF=0OF=0

testEAX,40┃EAX=000004D2HSF=0ZF=1OF=0

testEAX,80┃EAX=000004D2HSF=0ZF=0OF=0

test指令的作用是____将原操作数与目的操作数相与,但结果不送会目的操作数,只改变标志位,并不修改操作数____________。

(2)已知DATA单元开始存放三个带符号数,编制程序,检查三个数据是否同号,若同时为正,则在显示器上显示“+”;同时为负,则显示“-”;否则显示空格“”。

要求:

分别用三组数据(同时为正,同时为负,异号)调试程序,验证程序的正确性。

includeIrvine32.inc

.data

interraysdword23h,23h,-23h

.code

mainproc

movedi,OFFSETinterray

moveax,[edi]

andeax,80000000h

pusheax

moveax,[edi+4]

andeax,80000000h

pusheax

moveax,[edi+8]

andeax,80000000h

pusheax

popeax

popebx

popecx

jnzL1

cmpeax,ebx

jneL2

cmpeax,ecx

jneL2

moval,'+'

callWriteChar

exit

L1:

cmpeax,ebx

jneL2

cmpeax,ecx

jneL2

moval,'-'

callWriteChar

exit

L2:

moval,''

callWriteChar

exit

mainendp

endmain

实验三算术运算类指令、移位指令及循环程序设计

1、实验目的:

了解和掌握加、减、乘、除指令的在程序设计中的用法和应注意的问题,了解和掌握移位指令的功能、作用和方法。

了解和掌握循环控制类指令的功能、作用和方法。

学会循环程序设计的方法。

学习汇编语言输出输入语句的设计。

2、实验要求:

具体了解和掌握算术类指令、移位指令和循环控制类指令的使用,以及在使用时应注意的问题,学习循环程序设计的一般方法。

(1)在DEBUG系统状态下,分别编制、调试并记录以下加、减程序段的每一条指令的运行情况,查看寄存器的结果:

(Ⅰ)

MOVEAX,2389┃EAX=00000955H

MOVEBX,0CEDFH┃EBX=0000CEDFH

ADDEAX,EBX┃EAX=0000D834HEBX=0000CEDFH

(Ⅱ)

MOVEAX,2389┃EAX=00000955H

MOVEBX,0CEDFH┃EBX=0000CEDFH

SUBEAX,EBX┃EAX=FFFF3A76HEBX=0000CEDFH

(Ⅲ)

MOVEAX,2389┃EAX=00000955H

MOVEBX,0CEDFH┃EBX=0000CEDFH

ADDAH,BH┃AH=D7BH=CE

ADDAL,BL┃AL=34BL=DF

(Ⅳ)

MOVEAX,2389┃EAX=00000955H

MOVEBX,0CEDFH┃EBX=0000CEDFH

ADDAH,BH┃AH=D7BH=CE

ADCAL,BL┃AL=34BL=DFEFL=00000213

(2)在DEBUG系统状态下,分别编制、调试并记录以下乘、除程序段的每一条指令的运行情况:

(Ⅰ)

MOVAL,23┃AL=17H

MOVBL,0CEH┃BL=CEH

MULBL┃AX=1282HOV=1

(Ⅱ)

MOVAX,2389┃AX=0955H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1