实验四五汇编语言程序设计Word格式.docx
《实验四五汇编语言程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《实验四五汇编语言程序设计Word格式.docx(11页珍藏版)》请在冰点文库上搜索。
![实验四五汇编语言程序设计Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/e46a66da-a1af-4d1d-98aa-966b666964df/e46a66da-a1af-4d1d-98aa-966b666964df1.gif)
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
LEADX,STRING
MOVAH,9
INT21H
MOVAH,4CH
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
CODE,DS:
DATA,SS:
STACK
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
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
VAR3DB
16
ENDS
STACKS
DB
256
DUP(?
)
CODES
ASSUME
CS:
DATAS,SS:
MOV
AX,DATAS
MOV
DS,AX
LEA
SI,VAR1
LEA
DI,VAR2
BX,VAR3
CX,10
L1:
AL,[SI]
TEST
AL,80H
JZ
L2
[DI],AL
INC
DI
INC
SI
LOOP
L1
INT
21H
L2:
[BX],AL
INC
BX
LOOP
AH,4CH
INT
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
ASSUMECS:
DATA
MOVAX,DATA
MOVDS,AX
MOVADDRESS,OFFSETARY
MOVADDRESS+2,OFFSETCOUNT
MOVADDRESS+4,OFFSETMIN
LEABX,ADDRESS
CALLSEARCH
MOVAL,MAX
CALLOUTDATA
CALLCRLF
MOVAL,MIN
MOVAH,4CH
SEARCHPROC
PUSHCX
PUSHDX
PUSHBP
PUSHSI
PUSHDI
MOVBP,[BX+2]
MOVCX,DS:
[BP]
DECCX
MOVSI,[BX+4]
MOVDI,[BX+6]
MOVBP,[BX]
MOVDL,DS;
MOV[SI],DL
MOV[DI],DL
INCBP
LOP:
MOVDL,DS:
CMDDL,[SI]
JENEXT
JLMINC
JMPNEXT
MINC:
CMPDL,[DI]
JGENEXT
NEXT:
LOOPLOP
POPDI
POPSI
POPBP
POPDX
POPCX
RET
SEARCHENDP
OUTDATAPROCNEAR
PUSHAX
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:
MOVDL,’H’
MOVAH,2
POPDX
POPCX
POPBX
POPAX
RET
OUTDATAENDP
CRLFPROC
PUSHAX
PUSHDX
MOVDL,0AH
MOVDL,0DH
RET
CRLFENDP
ENDSTART
三、结合相关实验结果,列举实验中遇到的难点及解决办法。
1.在实验的刚开始,我并不知道如何正确使用宏汇编MASM,花了很长的一段时间查看微机课本上的附录部分,逐渐了解并成功地进行了汇编、连接、调试等过程。
四、根据自身经验,简单阐述实验与课堂教学以及课程项目之间的关联性。
最后一次上机实验让我觉得完成一个完整汇编程序的设计,并进行调试以达到最后目的真的是一件不容易的事情,尤其是实验五中的程序,是在参考了网上的程序才得以完成。
课本知识与实验实践是相辅相成互相关联的两部分,对于我们学习和掌握汇编知识来说都是特别重要的,实验是对课本知识掌握程度的检验,也是对课本知识的一种补充。