- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验2汇编语言程序上机过程(续)、顺序程序设计.doc
实验2 汇编语言程序上机过程(续)、顺序程序设计
实验目的
1.通过宏汇编(MASM)上机操作,使学生进一步掌握汇编语言源程序的编辑、汇编、连接和执行的完整过程。
2.进一步掌握调试过程中各命令的作用及使用方法,了解汇编和连接过程。
3.掌握顺序程序的概念和设计方法。
4.掌握汇编语言源程序框架的结构,伪指令的功能及使用。
实验内容与要求
要求学生按照教师的要求从下列编程题目中选择2-3题编写源程序、汇编、连接并调试得到正确结果。
编写程序计算Y=∑X1+X2+X3+X4+X5,其中Xi为字单元无符号数。
编写程序计算Z=(A+B)_SEG,要求把数据段DATA_SEG中的DATA1和附加段EXTRA_SEG中DATA2相加,并把结果存放在DATA_SEG段中的SUM中。其中DATA1 、DATA2和SUM均为双精度数,DATA1赋值为7725,DATA2赋值为-2341。
编写一个程序,将AX寄存器中的16位数分成四组,每组四位,然后把这四组数分别放在AL,BL,CL和DL中。
三、上机操作过程
1编写源程序
我所选的是第4题和第5题。
2建立源程序文件(MASM)
先建立一个文本文档(TEXT),再转变成MASM格式,然后经过汇编程序的汇编,使其转为目标代码文件。它是通过调用宏汇编MASM程序完成这一汇编操作的。汇编程序还将对源文件进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无错误时为止,此时得到的是一个目标文件(OBJ文件)。
3连接目标文件(LINK)
目标文件为浮动的相对地址,是不可直接执行的。必须经过连接,把有关模块连接在一起,构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由LINK连接程序实现的,此时得到的是一个可执行文件(EXE)。
4运行可执行文件
得到可执行文件后就可以直接调用可执行文件名,从盘上调到内存中运行。
四、源程序和结果如下
1.写一个完整的程序放在代码段CODE_SEG,要求把数据段DATA_SEG中的DATA1和附加段EXTRA_SEG中DATA2相加,并把结果存放在DATA_SEG段中的SUM中。其中DATA1 、DATA2和SUM均为双精度数,DATA1赋值为7725,DATA2赋值为-2341。
源程序如下:
DATA_SEG SEGMENT
WD1 LABEL WORD
DATA1 DD 7725
WS LABEL WORD
SUM DD ?
DATA_SEG ENDS
EXTRA_SEG SEGMENT
WD2 LABEL WORD
DATA2 DD -2341
EXTRA_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,DS:DATA_SEG,ES:EXTRA_SEG
MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA_SEG
MOV DS,AX
MOV AX,EXTRA_SEG
MOV ES,AX
MOV AX,WD1
ADD AX,WD2
MOV WS,AX
MOV AX,WD1+2
ADC AX,WD2+2
MOV WS+2,AX
RET
MAIN ENDP
CODE_SEG ENDS
END START
运行结果:
编写一个程序,将AX寄存器中的16位数分成四组,每组四位,然后把这四组数分别放在AL,BL,CL和DL中。
源程序如下:
.model small
.data
x DB 4 dup(?)
.stack 100H
.code
MAIN PROC FAR
start:
push ds
and ax,00H
push ax
mov ax,1234H
mov cx,04H
mov si,00H
lop:
push cx
mov cl,04H
rol ax,cl
push ax
and al,0FH
mov BYTE PTR x[si],al
pop ax
pop cx
add si,2
Loop lop
mov al,[X]
mov bl,[X+2]
mov cl,[X+4]
mov dl,[X+6]
print:
mov ah,02H
int 21H
mov dl,al
mov ah,02H
int 21H
mov dl,bl
mov ah,02H
int 21H
mov dl,cl
mov ah,02H
int 21H
exit:
ret
MAIN ENDP
END st
文档评论(0)