东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx

上传人:b****5 文档编号:15858877 上传时间:2022-11-16 格式:DOCX 页数:27 大小:1.16MB
下载 相关 举报
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx_第1页
第1页 / 共27页
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx_第2页
第2页 / 共27页
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx_第3页
第3页 / 共27页
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx_第4页
第4页 / 共27页
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx

《东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx

3、熟练掌握动态调试程序TD的常用命令和窗口功能,学会用TD调试程序,修改环境

4、学会利用DEBUG或TD检查认识指令功能的正确方法

二、实验内容

1、必做内容

(1)要求计算两个多字节十六进制数之差:

3B74AC60F8-20D59E36C1=?

式中被减数和减数为5个字节,存放在DATA1和DATA2的内存区,低位在前,高位在后。

试编写减法的程序段,要求相减的结果存放在首址为DATA3的内存区。

(2)以BUFFER为首地址的内存区存放了10个十六位带符号数,编写程序比较它们的大小,找出其中最小的带符号数,存入MIN和MIN+1单元。

2、选做内容

(1)两个字符串的长度均为10,首地址分别为STRING1和STRING2,比较两个字符串是否完全相同,如果相同,将BL寄存器置为00H;

如果不完全相同,将BL寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器中。

三、实验原理

1、实验基本步骤

(1)用任意一种文本编辑器(EDIT、NOTEPAD、UltraEDIT等)建立编辑汇编源程序,并将其保存为文件名.asm文件,将其放入带汇编工具的文件夹中(d:

\tasm)。

注:

文件名不要起的过长,在连接时可能会出现can’tfindfile的问题。

(2)开始菜单,点运行条目,打入cmd命令进入DOS调试环境。

(3)进入该文件夹(cdd:

\tasm),键入如下命令开始编辑程序:

d:

\czq>

edit文件名.asm

(4)将程序保存后返回DOS进行汇编,键入如下命令:

tasm文件名.asm

如果汇编通过,进行下一步,如果出现error,返回3步骤,根据错误的行数进行修改,然后重新汇编,直到不产生error为止。

此时若出现warning可不予理会。

(5)将程序进行连接,键入如下命令:

d:

link文件名.obj

如果连接正确,进行下一步,如果错误返回3步骤进行修改,然后重新编译和连接。

(6)执行程序,键入如下命令:

文件名.exe

如果执行正确,则应该显示正确结果;

如果执行错误,返回步骤3,重新编译连接和执行。

(7)如果不能直接从程序中找出错误,可以应用Debug程序进行调试,键入如下命令:

td文件名.exe

在找出错误后,重新返回3步骤,重新编译连接和执行。

四、实验源程序和流程图

1-1、流程图和源程序

源程序

DATASEGMENT

DATA1DB0F8H,60H,0ACH,74H,3BH

DATA2DB0C1H,36H,9EH,0D5H,20H

DATA3DB20dup(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,5

MOVSI,0

CLC

LOOPER:

MOVAL,DATA1[SI]

SBBAL,DATA2[SI]

MOVDATA3[SI],AL

INCSI

DECCX

JNZLOOPER

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

1-2

BUFFERDW1234H,2345H,3456H,5678H,6789H,789AH,0ABCDH,0BCDEH,0CDEFH,0EDF1H

MINDW1DUP(?

LEASI,BUFFER

MOVCX,10

CLD

LODSW

MOVMIN,AX

DECCX

NEXT:

CMPAX,MIN

JLLESS

JMPGOON

LESS:

MOVMIN,AX

GOON:

LOOPNEXT

1-3

STRING1DB'

ABCDEFJHIJ'

STRING2DB'

ABFMEWATER'

ASSUMEDS:

DATA,CS:

CODE

LEASI,STRING1

LEADI,STRING2

REPECMPSB

JCXZALLMATCH

DECSI

DECDI

JMPDONE

ALLMATCH:

MOVBX,00H

DONE:

MOVBX,0FFH

ENDSTART

五、实验结果

1-1

实验遇到的问题以及解决的办法

1、在实验课之前执行程序时,由于电脑是window7的32位操作系统,在老师的帮助下,我们在自己电脑上安装了Dosbox来调试程序。

2、执行第一个程序时,结果出错。

但在反复检查后,发现程序并没有逻辑上的错误。

因此推断可能是某一个语句的表达在语法上存在错误。

仔细检查并且一个个尝试以后发现是

OUT:

MOVAH,4CH

这里在删除“OUT:

”以后,程序就能正确执行了。

3、在执行第一个实验时,最终的计算结果始终不对。

在仔细检查自己写的程序以后,发现时LOOPER语句段内,少写了一行“MOVDATA3[SI],AL”,导致最后的计算结果根本就没有存入到数据段当中。

在添加了这一句之后,程序得到正确结果。

实验二 汇编语言程序设计

2015年04月30日报告时间:

2013年05月02日

1、近一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念

2、熟练掌握动态调试程序TD/DEBUG的常用指令和窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器环境

3、熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解DOS/BIOS功能调用的基本方法

(1)从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其它字符不变),并按原顺序将这些字符在屏幕上显示出来(参考程序P36),并显示字符串“ThetotalnumberisXXXXX”。

(2)从键盘输入一个0~255之间的十进制数,将其转换为16进制数,并在屏幕上显示变换前后的数据(参考程序P38)。

(1)从键盘输入5个十六进制带符号数(范围为-128~+127),请将它们按从大到小排序,并将排序前后的数据显示在屏幕上。

2-1

流程图

INPUTDB100,100DUP(0)

STRING1DB0DH,0AH,'

PLEASEINPUTYOURSTRING'

0DH,0AH,'

$'

STRING2DB0DH,0AH,'

THESTRINGYOUINPUTIS:

'

STRING3DB0DH,0AH,'

DOYOUWANTTOCONTINUE(Y/N):

STRING4DB0DH,0AH,'

THETOTALNUMBERIS:

STACKSSEGMENTSTACK

DB256DUP(0)

STACKSENDS

ASSUMECS:

DATA,SS:

STACKS

MAINPROCFAR

MOVAX,DATA

MOVAX,STACKS

MOVSS,AX

LOOP1:

MOVDX,OFFSETSTRING1

MOVAH,09H

MOVDX,OFFSETINPUT

MOVAH,0AH

MOVDX,OFFSETSTRING2

CALLDISP

MOVDX,OFFSETSTRING4

ADDBL,30H

MOVDL,BL

MOVAH,02H

MOVDX,OFFSETSTRING3

MOVAH,01H

CMPAL,'

Y'

JZLOOP1

MAINENDP

DISPPROCNEAR

XORCX,CX

MOVCL,INPUT[1]

MOVBL,INPUT[1]

MOVSI,2

AGAIN:

MOVDL,INPUT[SI]

CMPDL,61H

JBNEXT

CMPDL

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

当前位置:首页 > 表格模板 > 合同协议

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

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