实验四五汇编语言程序设计.docx
- 文档编号:2074025
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:11
- 大小:78.97KB
实验四五汇编语言程序设计.docx
《实验四五汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《实验四五汇编语言程序设计.docx(11页珍藏版)》请在冰点文库上搜索。
实验四五汇编语言程序设计
16~17春《微机原理》课程实验报告
姓名:
学号:
成绩:
实验四、五.汇编语言程序设计
一、简述对汇编语言程序的理解。
汇编语言程序的设计需要综合地运用汇编语言知识,在编写过程中不仅需要我们对汇编语言掌握熟练,还要求我们充分考虑各部分之间的联系,灵活地编写并优化程序。
汇编语言的设计一般分为以下几个步骤:
1、分析问题,抽象出描述问题的数据模型
2、确定问题的算法思想
3、画出流程图或结构图
4、分配存储器和工作单元(寄存器)
5、逐条编写程序
6、静态检查,上机调试
二、按照实验指导书的“实验基本要求”以及“实验内容”的要求,描述相关实验内容的完成情况。
实验四:
1.建立下列程序的可执行文件,并回答问题。
DATASSEGMENT
STRINGDB'HelloWorld!
',13,10,'$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
LEADX,STRING
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
1)在DEBUG中,如何观察数据段中的数据存储情况?
数据存储的段地址和偏移地址如何察看?
答:
输入-D,执行结果如下:
每行十个数据,最前面显示的地址是每行第一个数据的地址信息,且冒号(“:
”)之前的四位是段地址,之后四位是偏移地址,每行第一个数据每往右边一个数据,段地址不变,偏移地址加一。
2)在DEBUG中,如何查看机器码所对应的源程序?
代码的段地址和偏移地址如何确定?
答:
输入-U,执行结果如下图:
代码的短地址和偏移地址的确定同上题1)。
3)运行上述程序的命令行是:
G=0000,程序的运行结果是“HelloWorld!
”。
4)代码段中的LEADX,STRING语句,翻译成机器指令后再反汇编,得到什么语句?
为什么?
由上题2)中的运行结果可知会得到以下语句:
LEADX,[0000]
因为STRING的偏移地址是0000H
5)如果代码段中有一条MOVBL,STRING语句,翻译成机器指令后再反汇编,得到什么语句?
同理可知会得到一下语句:
MOVBL,[0000]
2.从实验1的2-4三个参考程序中,任选一个改编成完整源程序,建立其可执行文
件并运行。
(注意:
需要定义标号,作为控制转移类指令中的操作数;直接寻址的存储器操作数,应通过变量表示)
选择程序2,则完整源程序如下:
.
STACKSEGMENTSTACK
DB100DUP(?
)
TOPLABELWORD
STACKENDS
DATASEGMENT
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
MOVBL,0
PUSHBX
DATA1:
MOVDL,20H
MOVAH,02H
POPBX
MOVAL,BL
INCAL
CMPAL,1BH
JNZDATA2
MOVAL,01H
DATA2:
MOVBL,AL
PUSHBX
ADDAL,40H
MOVAH,02H
INT21H
MOVCX,0FFFFH
DATA3:
DECCX
JNZDATA3
JMPDATA1
CODEENDS
ENDSTART
运行后,连续显示A,B,C,D······Z大写英文字符
实验五:
1.编制一个将10个带符号的正、负数分开的源程序,生成可执行文件后,在debug下调试运行。
(1)设10个数为01H,02H,03H,04H,06H,0FFH,80H,81H,06H,07H。
(2)将这些数据中的正、负数分开,正数放在变量VAR2对应的数据区中,负数放在VAR3对应的数据区中。
DATAS SEGMENT
VAR1 DB 01H,02H,03H,04H,06H,0FFH,80H,81H,06H,07H,6 DUP(00)
VAR2 DB 16 DUP(00)
VAR3DB 16 DUP(00)
DATAS ENDS
STACKS SEGMENT
DB 256 DUP(?
)
STACKS ENDS
CODES SEGMENT
ASSUME CS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,VAR1
LEA DI,VAR2
LEA BX,VAR3
MOV CX,10
L1:
MOV AL,[SI]
TEST AL,80H
JZ L2
MOV [DI],AL
INC DI
INC SI
LOOP L1
INT 21H
L2:
MOV [BX],AL
INC BX
INC SI
LOOP L1
MOV AH,4CH
INT 21H
CODES ENDS
END START
2.编制源程序,并生成EXE可执行文件,然后调试运行
(1)功能要求:
找出无序的有符号数中的最小值和最大值(最少10个数,数据内容随意设定,数据类型:
字节)。
(2)数据区的第一个数存放数据长度,数据紧随其后(数据类型:
字节)。
(3)在屏幕上输出最大值和最小值:
格式:
MAX=“最大值”,MIN=“最小值”(调用DOS功能实现)。
DATASEGEMENT
ARYDB30,16,8,-1,13,49,7,11,4,20
COUNTDB10
MAXDB?
MINDB?
ADDRESSDW4DUP(?
)
DATAENDS
STACKSEGMENTPARASTACK’STACK’
DB256DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVADDRESS,OFFSETARY
MOVADDRESS+2,OFFSETCOUNT
MOVADDRESS+4,OFFSETMIN
LEABX,ADDRESS
CALLSEARCH
MOVAL,MAX
CALLOUTDATA
CALLCRLF
MOVAL,MIN
CALLOUTDATA
MOVAH,4CH
INT21H
SEARCHPROC
PUSHBX
PUSHCX
PUSHDX
PUSHBP
PUSHSI
PUSHDI
MOVBP,[BX+2]
MOVCX,DS:
[BP]
DECCX
MOVSI,[BX+4]
MOVDI,[BX+6]
MOVBP,[BX]
MOVDL,DS;[BP]
MOV[SI],DL
MOV[DI],DL
INCBP
LOP:
MOVDL,DS:
[BP]
CMDDL,[SI]
JENEXT
JLMINC
MOV[SI],DL
JMPNEXT
MINC:
CMPDL,[DI]
JGENEXT
NEXT:
INCBP
LOOPLOP
POPDI
POPSI
POPBP
POPDX
POPCX
POPBX
RET
SEARCHENDP
OUTDATAPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVBL,AL
MOVCL,4
MOVAL,CL
ORAL,30H
CMPAL,3AH
JBOUTH
ADDAL,07H
OUTH:
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,BL
ANDDL,OFH
ORDL,30H
CMPDL,3AH
JBOUTL
ADDDL,07H
OUTL:
MOVAH,02H
INT21H
MOVDL,’H’
MOVAH,2
INT21H
POPDX
POPCX
POPBX
POPAX
RET
OUTDATAENDP
CRLFPROC
PUSHAX
PUSHDX
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
POPDX
POPAX
RET
CRLFENDP
CODEENDS
ENDSTART
三、结合相关实验结果,列举实验中遇到的难点及解决办法。
1.在实验的刚开始,我并不知道如何正确使用宏汇编MASM,花了很长的一段时间查看微机课本上的附录部分,逐渐了解并成功地进行了汇编、连接、调试等过程。
四、根据自身经验,简单阐述实验与课堂教学以及课程项目之间的关联性。
最后一次上机实验让我觉得完成一个完整汇编程序的设计,并进行调试以达到最后目的真的是一件不容易的事情,尤其是实验五中的程序,是在参考了网上的程序才得以完成。
课本知识与实验实践是相辅相成互相关联的两部分,对于我们学习和掌握汇编知识来说都是特别重要的,实验是对课本知识掌握程度的检验,也是对课本知识的一种补充。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 四五 汇编语言 程序设计