东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx
- 文档编号:15858877
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:27
- 大小:1.16MB
东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx
《东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《东南大学微机实验指令与汇编语言基础汇编语言程序设计文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 微机 实验 指令 汇编语言 基础 程序设计