一、设计一个完整的汇编语言源程序,实现Z=X Y_第1页
一、设计一个完整的汇编语言源程序,实现Z=X Y_第2页
一、设计一个完整的汇编语言源程序,实现Z=X Y_第3页
一、设计一个完整的汇编语言源程序,实现Z=X Y_第4页
一、设计一个完整的汇编语言源程序,实现Z=X Y_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、设计一个完整的汇编语言源程序,实现一、设计一个完整的汇编语言源程序,实现Z=X+YZ=X+Y。MOV AL,XMOV BL,YADD AL,BLMOV Z,AL;取被加数;取被加数;取加数;取加数;完成;完成X+Y运算运算;把结果保存在目的单元中;把结果保存在目的单元中1. 实现加法运算的程序段如下:实现加法运算的程序段如下:2. 数据段定义数据段定义DATA SEGMENTDATA ENDSX DB 32HY DB 25HZ DB 1 DUP(?)(?) 段定义语句段定义语句 SEGMENT/ENDS功能:指出段名,表示段的开始和结束功能:指出段名,表示段的开始和结束格式:段名格式:段名

2、SEGMENT 段名段名 ENDS;数据段起始;数据段起始;数据段内容;数据段内容;数据段结束;数据段结束3. 堆栈段定义堆栈段定义STACKA SEGMENT STACKDB 100 DUP(?)(?)STACKA ENDS4. 代码段定义代码段定义CODE SEGMENTCODE ENDSASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA段寄存器说明语句段寄存器说明语句 ASSUME格式格式: ASSUME 段寄存器段寄存器: 段名段名, 段寄存器段寄存器: 段名段名, 功能功能: 说明当前段所在位置。说明当前段所在位置。二、完整的汇编语言源程序,实现二

3、、完整的汇编语言源程序,实现Z=X+YZ=X+Y。MOV AL, XMOV BL, YADD AL, BLMOV Z, ALX DB 32HY DB 25HZ DB 1 DUP(?)DATA SEGMENTDATA ENDSSTACKA SEGMENTSTACKA ENDSCODE SEGMENTCODE ENDS END STARTASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AXMOV AH, 4CHINT 21H核心程序段核心程序段数据定义数据定义返回返回DOS状态状态对

4、对DS和和ES进行初始化进行初始化说明各段所在位置说明各段所在位置定义堆栈段定义堆栈段定义数据段定义数据段定义代码段定义代码段结束结束DB 100 DUP(?)ORG 2100H指定程序存放的起始地址偏移量指定程序存放的起始地址偏移量DATA SEGMENTDATA ENDSCODE SEGMENTCODE ENDS END STARTASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AXMOV AH, 4CHINT 21H核心程序段核心程序段返回返回DOS状态状态对对DS和和ES

5、进行初始化进行初始化说明各段所在位置说明各段所在位置定义数据段定义数据段结束结束 三、程序正常结束的方式三、程序正常结束的方式1。主程序方式。主程序方式2。定义为过程形式。定义为过程形式DATA SEGMENTDATA ENDSCODE SEGMENTCODE ENDS END STARTASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA MOV AX, DATA MOV DS, AX MOV ES, AXRET核心程序段核心程序段返回返回DOS状态状态对对DS和和ES进行初始化进行初始化说明各段所在位置说明各段所在位置定义数据段定义数据段结束结束 MAIN

6、 PROC FAR PUSH DS SUB AX,AXPUSH AX压返回压返回DOS地址地址MAIN ENDP1. 起始地址说明伪指令起始地址说明伪指令 ORG格式:格式:ORG 偏移地址偏移地址2. 数据定义伪指令数据定义伪指令 DB、DW、DD、DF、DQ、DT、DUP格式:格式:变量名变量名 DB 表达式表表达式表作用作用: 为数据项分配一个或多个字节的存储空间,且可给它为数据项分配一个或多个字节的存储空间,且可给它 们赋初值。们赋初值。 字节变量定义伪指令字节变量定义伪指令 DB 功能:定义字节变量区,变量区的数据由表达式功能:定义字节变量区,变量区的数据由表达式 (逗号分隔的数据项

7、)给出,每个数据项占一个字节。(逗号分隔的数据项)给出,每个数据项占一个字节。四、其他伪指令说明四、其他伪指令说明功能:说明该伪指令后的程序或数据所在位置的起始偏移地址功能:说明该伪指令后的程序或数据所在位置的起始偏移地址例如:例如:X DB 1,3,5 +3-1,9 内存分配内存分配 图如右所示图如右所示:0 10 30 70 9X 字变量定义伪指令字变量定义伪指令 DW 格式与格式与DB指令相同,定义字变量区,每个数据项占指令相同,定义字变量区,每个数据项占两个字节,低字节在低地址处,高字节在高地址处。两个字节,低字节在低地址处,高字节在高地址处。 例如:例如:Y DW 1005h, 00

8、28h 05h10h28h00hY 双字变量定义伪指令双字变量定义伪指令 DD 三字变量定义伪指令三字变量定义伪指令 DF 四字变量定义伪指令四字变量定义伪指令 DQ 2010h2011h2012h2013h单元地址单元地址内存分配图如右所示内存分配图如右所示: 五字变量定义伪指令五字变量定义伪指令 DT 格式格式与与DB指令相同,定义双字变量区指令相同,定义双字变量区格式格式与与DB指令相同,定义三字变量区指令相同,定义三字变量区格式格式与与DB指令相同,定义四字变量区指令相同,定义四字变量区格式格式与与DB指令相同,定义五字变量区指令相同,定义五字变量区8 0 h7 0 h6 0 h5 0

9、 hZ4 0 h3 0 h2 0 h1 0 h2100h2101h2106h2107h 例:有如下数据定义指令,例:有如下数据定义指令, 分析其存储情况。分析其存储情况。 C1 DB A, B, CC2 DW A, B , C内存分配图如下所示内存分配图如下所示:4 1 h4 2 h4 3 h4 1 hC10 0 h4 2 h0 0 h4 3 h2020h2021h2027h2028h C20 0 h例如:例如:Z DQ 1020304050607080h 内存分配内存分配 图如下页所示图如下页所示:五、汇编语言程序的上机步骤五、汇编语言程序的上机步骤用用EDIT编辑修改源程序,存盘形成编辑修

10、改源程序,存盘形成*.asm文件文件用用TASM32 汇编源程序文件汇编源程序文件,形成形成*.obj文件文件有错误吗?有错误吗?用用TLINK 程序连接目标码文件程序连接目标码文件, 形成可执行文件形成可执行文件*.exe文件文件有错误吗?有错误吗?用用TD 程序运行可执行文件程序运行可执行文件*.exe有错误吗?有错误吗?用用TD程序进行调试,找出错误原因程序进行调试,找出错误原因结束结束开始开始NYNYYNl12:汇编语言编程与调试方法:汇编语言编程与调试方法l(1)汇编语言程序结构)汇编语言程序结构l(2)汇编语言程序开发过程)汇编语言程序开发过程l(3)MSDOS EDIT文本编辑文本编辑l(4)TD使用方法使用方法l131:简单程序设计实验:简单程序设计实验lP25:例:例11lP26:实验内容1lP27:实验内容2lP27:实验内容3data segmentx dd 02a8b7654hy dw 5abchz dw ?f dw ?data endsstacka segment para stack stack db 100 dup(?)stacka endscode segment assume ds

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论