汇编实验报告电子科技大学Word格式.docx

上传人:b****1 文档编号:5750518 上传时间:2023-05-05 格式:DOCX 页数:36 大小:994.89KB
下载 相关 举报
汇编实验报告电子科技大学Word格式.docx_第1页
第1页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第2页
第2页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第3页
第3页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第4页
第4页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第5页
第5页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第6页
第6页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第7页
第7页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第8页
第8页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第9页
第9页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第10页
第10页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第11页
第11页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第12页
第12页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第13页
第13页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第14页
第14页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第15页
第15页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第16页
第16页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第17页
第17页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第18页
第18页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第19页
第19页 / 共36页
汇编实验报告电子科技大学Word格式.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编实验报告电子科技大学Word格式.docx

《汇编实验报告电子科技大学Word格式.docx》由会员分享,可在线阅读,更多相关《汇编实验报告电子科技大学Word格式.docx(36页珍藏版)》请在冰点文库上搜索。

汇编实验报告电子科技大学Word格式.docx

2)多条指令追踪:

-T[=地址][值]

该命令从指定地址起执行n条命令后停下来,n由[值]确定

5.继续命令P(Proceed),格式为:

-P[=地址] 

[数值]

类似T命令,逐条执行指令、显示结果。

但是当遇到子程序调用、中断功能调用和循环指令等时,不在子程序、中断服务程序或循环体中单步执行,而是直接执行完成子程序、中断服务程序或循环体,然后显示结果。

6.显示内存单元内容的命令D(Dump)命令显示主存单元的内容,格式为:

-D[地址]或-D[范围]

-d100 

显示数据段100h开始的主存单元

-dcs:

显示代码段的主存内容L3;

显示三个变量

-d2f0L20;

显示ds:

2f0h开始的20h个主存数据

7.汇编程序以汇编语言程序文件作为输入,并由它产生两种输出文件——目标程序文件和源程序列表,如图所示:

其中,目标程序文件(.OBJ)经连接定位后交给机器执行;

源程序列表文件(.LST)将列出源程序、目标程序和机器语言代码及符号表。

其中,符号表是汇编程序所提供的一种诊断手段,它包括程序中所用的所有符号和名字,以及这些符号和名字所指定的地址值。

如果程序出错,可以比较容易地从这个符号表中检查出错误。

五、实验器材(设备、元器件)

windowsXP,Masm50

六、实验步骤:

1.编辑源程序,建立一个以后缀为.ASM的文件.

2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

无错时继续第3步。

3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。

七、实验数据及结果分析:

实验代码:

DATASEGMENT

VARXDB1

VARYDB2

VARZDB?

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVAL,0H

MOVAL,VARX

MOVCL,2H

SHLAL,CL;

4*x

ADDAL,VARX;

5*x

MOVBL,VARY

SHLBL,CL;

2*y

ADDAL,BL;

5*X+2*Y

SUBAL,7H;

5*X+2y-7

SARAL,1H;

(5x+2y-7)/2

MOVVARZ,AL;

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验截图:

八、实验结论、心得体会和改进建议:

1.通过实验使我知道了和熟悉了汇编程序设计的步骤

2.建立数学模型:

遇到一个题目,首先要进行全面的分析,根据问题提出的条件特点,找出规律,找出问题的数学模型或者制定解决问题的规律。

3.合理分配存储空间和寄存器

实验二

分支程序与循环程序设计

1.根据输入的字母进行大小写转换(若是输入小写字母则转换成为大写字母,反之),若输入的不是字母则提示出错并重新输入。

2.显示九九表

1.掌握分支程序的结构。

2.掌握分支程序的设计与调试方法。

3.掌握循环程序设计与调试方法

4.掌握正确分配与使用寄存器。

1.预留存储器空间RES1、RES2和RES3。

RES1DB0

RES2DB0

RES3DB0

2.按照顺序正确取出要判定的数据

LEABX,BUF

LL:

MOVAL,[BX];

要注意正确选用间址寄存器

INCBX

判定语句及其相应的跳转语句

JMPLL

3.正确存放数据到指定的空间

MOVDL,0;

存放数据个数,初值为0

INCDL

MOVRES1,DL

4.从键盘输入字符中断

Movah,1

Int21h;

结果是al←输入字符的ASCII码

5.显示一个字符中断

Movah,2

Movdl,要显示字符的ASCII码

6.屏幕显示字符串(9号功能调用)

格式:

MOVDX,字符串的偏移地址

MOVAH,09H

在使用9号功能调用时,应当注意以下问题:

①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。

②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。

7.部分需要注意的指令

ADC带进位加法----将进位标志CF的值加在和中

·

INC加1.

SUB减法.

SBB带借位减法----连着借位CF一起减去

DEC减1.

NEC求补----变反加1

CMP----比较执行两操作数相减,影响标志位OF、SF、ZF、PF和CF,即通过标志位的状态进行两数大小的比较。

MUL无符号乘法

IMUL整数乘法

以上两条,结果如下:

对字节操作数,(AX)←(AL)*src;

对字操作数,(DX,AX)←(AX)*src

DIV无符号除法.

IDIV整数除法.

以上两条,结果回送:

商回送AL,余数回送AH,(字节运算);

或商回送AX,余数回送DX,(字运算).

windowsXP,Masm50,Windows7,MasmforWindows(一个集成软件,运行、链接、调试全包括)

1.编写源程序文件;

2.汇编,若发现语法错误或者格式错误则修改;

3.链接,形成可执行文件;

4.画流程图:

5运行程序,得到正确结果;

6撰写实验报告

1.根据输入的字母进行大小写转换流程图

根据输入的字母进行大小写转换源程序

datasegment

promotedb'

pleaseinputacharacter:

$'

errorhintsdb'

inputerror!

onlycharacterplease!

outputdb?

dataends

stack1segmentparastack

dw20hdup(0)

stack1ends

codesegsegment

assumeds:

data,ss:

stack1,cs:

codeseg

start:

movax,data

movds,ax

leadx,promote

movah,9

int21h

movah,1

cmpal,41h

jaelowercasebuf

jberrorhint

lowercasebuf:

cmpal,5ah

jbelowercase

jauppercasebuf

uppercasebuf:

cmpal,61h

jaeuppercase

lowercase:

addal,32

movoutput,al

jmpdone

uppercase:

subal,32

errorhint:

leadx,errorhints

movah,0ah

movah,4ch

done:

movah,2

movdl,output

codesegends

endstart

根据输入的字母进行大小写转换截图:

2.九九乘法表流程图:

九九乘法表源程序

codesegment;

数据段开始

mainprocfar;

子程序调用时使用的参数

assumecs:

code;

设定数据放入cs寄存器

pushds;

DS寄存器入栈

movax,0;

ax寄存器赋值0

pushax;

ax寄存器入栈

movbl,1;

乘数赋值为1

lop2:

movbh,1;

被乘数赋值为1

lop1:

moval,bh;

被乘数存放如al寄存器当中

mulbl;

将bl与bh相乘结果送到ax中

aam;

乘法调整指令

addbh,30h;

变为ASCII的值

addbl,30h

movcx,ax

movdl,bh;

用21中断显示被乘数

movah,2

int21h

movdl,'

*'

;

显示乘号

movdl,bl;

显示乘数

='

显示等号

cmpch,0;

查看高位有没有值

jetu;

等于转移

addch,30h;

若有则显示

movdl,ch

tu:

addcl,30h;

否则显示低位

movdl,cl

'

显示空格movah,2

subbh,30h;

将ASCII还原为BCD数

subbl,30h

incbh;

将被乘数加一

cmpbh,bl;

比较看是不是要换行

jnalop1;

不高于转移

movdl,0ah;

换行与置首位显示

movdl,0dh;

置于首位置并显示

incbl;

否则乘数加一

cmpbl,9;

比较乘数与9的大小,是不是要结束

jnalop2

movah,4ch;

返回dos

mainendp

codeends

endmain

九九乘法表截图:

实验分析:

打印九九乘法表时,需注意换行问题,以及循环时的下标变换。

1通过本次实验过程.掌握分支程序的结构,认识到汇编语言和其他语言一样丰富,有着多种分支结构,汇编语言从底层支持语句的跳转这样在实现一些分支语句时既有效率有简洁直观。

2.通过本次实验过程还还掌握分支程序的设计与调试方法;

3.通过本次实验过程还掌握循环程序设计与调试方法;

4.通过本次实验过程还掌握正确分配与使用寄存器;

5.回答思考:

思考:

LOOP指令是先循环再减CX还是先减CX后判定再循环?

答:

先减去CX

实验三

数制、码制和子程序的编程与调试

1、从键盘输入两个2位十进制正数,相加,结果以十六进制数形式显示在屏幕上。

(要求结果显示完整的算式)

2、从键盘输入两个2位十进制正数转换成组合BCD码后,相加,结果以十进制形式显示在屏幕上。

(要求结果显示完整的算式)

1.熟练掌握编写汇编语言原程序的基本方法和基本框架。

2.熟练使用DEBUG调试程序。

3.掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换。

4.掌握用DOS功能调用,实现字符的输入和显示。

5.掌握子程序的编程与调试方法。

1.字符串输入功能调用(0AH号功能调用)

格式:

MOVDX,已定义缓冲区的偏移地址

MOVAH,0AH

 

功能:

从键盘接收字符,并存放到内存缓冲区。

①执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,该个数包括回车符0DH在内。

第二个字节保留,在执行程序完毕后存入输入的实际字符个数(不含回车)。

从第三个字节开始存入从键盘上接收字符的ASCII码。

若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。

若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,一直到输入回车键为止。

②应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。

2.组合BCD码是用4个二进制位表示一个十进制位,如:

MOVAL,68H 

MOVBL,28H 

ADDAL,BL 

AL=68H+28H=90H

DAA 

十进制调整:

AL=96H

4.十进制数加法调整指令DAA

用于对组合BCD码相加的结果进行调整,使结果仍为组合的BCD码。

分析:

二进制加法是逢二进一,而BCD码≤9时逢二进一,BCD码>9时将逢十进一。

因此,对于>9的BCD码要进行调整,才能得到正确的运算结果。

具体的调整方法是:

加6调整。

Windows7,MasmforWindows(一个集成软件,运行、链接、调试全包括)

1.从键盘输入两个2位十六进制数,相加,结果以十进制形式显示在屏幕上

流程图:

源程序:

MSG1DB13,10,'

Pleaseinputnumber_1:

$'

MSG2DB13,10,'

Pleaseinputnumber_2:

CRLFDB13,10,'

NNDB?

?

MMDB?

DATAENDS

ASSUMECS:

CODE,DS:

DATA

MOVAX,DATA

MOVDS,AX

LEADX,MSG1

MOVAH,9

CALLIN_CHAR

MOVMM,AL

LEADX,MSG2

MOVNN,AL

LEADX,CRLF

MOVAL,MM

CALLOUT_NUM

MOVDL,'

+'

MOVAH,2

MOVAL,NN

ADDAL,MM

MOVAH,0

ADCAH,0

CALLOUT_1

EXIT:

MOVAH,4CH

INT21H;

返回DOS

IN_CHAR:

LEABX,NN

MOVCX,2

IN_1:

MOVAH,1

CMPAL,'

0'

JBIN_1

F'

JAIN_1

9'

JBE_09

A'

SUBAL,7

_09:

SUBAL,30H

MOV[BX],AL

INCBX

LOOPIN_1

XCHGAL,NN

MOVBL,16

MULBL

ADDAL,NN

RET

OUT_NUM:

OUT_1:

MOVDX,0

MOVBX,100

DIVBX

XCHGAX,DX

CALLOUT_CHAR

MOVBX,10

MOVDL,AL

OUT_CHAR:

PUSHAX

ADDDL,30H

POPAX

CODEENDS

截图:

流程图:

hint1db'

pleaseinputthefirstnumber:

hint2db'

pleaseinputthesecondnumber:

opt1db3,?

3dup(?

),'

opt2db3,?

hint3db'

?

hint4db'

hint5db'

codesegment

code

movax,data

leadx,hint1

leadx,opt1

leadx,opt2

moval,opt1+2

movhint3,al

moval,opt1+3

movhint3+1,al

moval,opt2+2

movhint4,al

moval,opt2+3

movhint4+1,al

movcl,4

salal,cl

movbl,opt1+3

subbl,30h

addal,bl

movbl,opt2+2

salbl,cl

movcl,opt2+3

subcl,30h

addbl,cl

jcset0

jncset1

set0:

movbl,30h

set1:

movbl,31h

movhint5,bl

daa

movbl,al

saral,cl

addal,30h

movhint5+1,al

andbl,0fh

addbl,30h

movhint5+2,bl

leadx,hint3

movah,4ch

int21h

codeends

1.通过本次实验熟练掌握编写汇编语言原程序的基本方法和基本框架。

2.通过本次实验已经熟练使用DEBUG调试程序。

3.通过本次实验掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换,从数码变换的角度入手,着重强调了子程序的调用以及跳转指令的使用,并且使数码在计算机内部的表示方法深入人心。

4.通过本次实验还掌握用DOS功能调用,实现字符的输入和显示。

5.通过本次实验还掌握子程序的编程与调试方法。

6.思考:

上例中,bcdbuf预留的空间是否可以缩减?

程序是否可以精简?

(假定我们转换的都是带符号数)

上例用加乘的方式实现了转换,如果用乘加的方式是否可行?

不能。

实验四

串操作指令及其应用程序的设计与调试运行

.从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。

要求在屏幕上以右边对齐的形式显示出来。

1.熟悉串操作指令的基本格式和使用方法。

2.掌握常用的串操作程序的设计方法。

3.熟悉串操作程序的调试运行过程。

1.需要用到9号DOS功能调用显示字符串,以实现人机对话。

比如:

在数据段中设置两个存放提示信息的字符串,一个是提示用户输入,另一个是指示显示结果:

massage1DB‘pleaseinputastring:

’,0AH,0DH,‘$’

massage2DB‘Right-adjustingofstring:

2.需要用到10号DOS功能调用输入连续的字符串,并为这些字串预留存储空间,比如:

NUMEQU25

STRING1DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’

STRING2DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’

3.需要用到的串操作指令有:

1)串传送指令MOVSB/MOVSW

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2