第4章--程序格式_第1页
第4章--程序格式_第2页
第4章--程序格式_第3页
第4章--程序格式_第4页
第4章--程序格式_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计汇编语言程序设计 4.1 汇编语言源程序汇编语言源程序 4.2 伪操作伪操作 4.3 汇编语言程序的上机过程汇编语言程序的上机过程第第4章章 汇编语言程序格式汇编语言程序格式汇编语言程序设计汇编语言程序设计4.1 汇编语言源程序汇编语言源程序汇编源程序:由三部分组成:汇编源程序:由三部分组成:汇编指令、伪指令、其他标号汇编指令、伪指令、其他标号与符号。与符号。一个汇编源程序是由多个段组一个汇编源程序是由多个段组成的,这些段被用来存放代码、成的,这些段被用来存放代码、数据或当作栈空间来使用。数据或当作栈空间来使用。注意注意:一个有意义的汇编程序:一个有意义的汇编程序中至少要有一个

2、段,这个段用中至少要有一个段,这个段用来存放代码。来存放代码。最后两条指令所实现的功能是最后两条指令所实现的功能是程序返回。程序返回。start汇编语言程序设计汇编语言程序设计4.2 伪操作(伪指令)伪操作(伪指令) 伪操作是汇编程序对源程序进行汇编时处伪操作是汇编程序对源程序进行汇编时处理的操作。理的操作。 处理器选择伪操作处理器选择伪操作 段定义伪操作段定义伪操作 程序开始和结束伪操作程序开始和结束伪操作 数据定义及存储器分配伪操作数据定义及存储器分配伪操作 表达式赋值伪操作表达式赋值伪操作 地址计数器与对准伪操作地址计数器与对准伪操作 基数控制伪操作基数控制伪操作功能:告诉汇编程序应该选

3、择哪一种指令系统。功能:告诉汇编程序应该选择哪一种指令系统。位置:一般放在整个程序的最前面,也可放在程位置:一般放在整个程序的最前面,也可放在程序中所用指令的上一行。序中所用指令的上一行。如不给出,则默认为如不给出,则默认为.8086。功能:定义一个段,功能:定义一个段,segment说明一个段开始,说明一个段开始,ends 说明一个段结束。一个段必须有一个名称来说明一个段结束。一个段必须有一个名称来标识,使用格式为:标识,使用格式为: 段名段名 segment 段名段名 endsEND label 表示源程序结束的伪操作,标号表示源程序结束的伪操作,标号label 指示程指示程序开始执行的起

4、始地址。序开始执行的起始地址。汇编语言程序设计汇编语言程序设计一、一、 assume寄存器与段的关联假设寄存器与段的关联假设assume :含义为:含义为“假设假设”。它假设某一段寄存器和程序中的某一个用它假设某一段寄存器和程序中的某一个用 segment ends 定义的段相关联。通过定义的段相关联。通过assume说明这种关联,说明这种关联,在需要的情况下在需要的情况下 ,编译程序可以将段寄存器和某一,编译程序可以将段寄存器和某一个具体的段相联系。个具体的段相联系。格式格式 段寄存器:段名段寄存器:段名 注意注意:assume只是说明关联关系,并没有对段寄存器只是说明关联关系,并没有对段寄

5、存器复制,除了复制,除了CS(装入程序时由(装入程序时由CPU给出),其他段给出),其他段寄存器要在程序中设置。寄存器要在程序中设置。汇编语言程序设计汇编语言程序设计 二、段定义伪操作:二、段定义伪操作:data segment data segment ; 定义数据段定义数据段 data endsdata ends;-;-extra segment extra segment ; 定义附加段定义附加段 extra endsextra ends;-;-code segment code segment ; 定义代码段定义代码段 assume cs:code, ds:data, es:extra

6、assume cs:code, ds:data, es:extrastart: start: mov ax, data mov ax, data mov ds, ax mov ds, ax ; 段地址段地址 段寄存器段寄存器 code endscode ends end start end startData为段名称,也是段为段名称,也是段首地址,可自己定义首地址,可自己定义明确段和段寄明确段和段寄存器的关系存器的关系程序开始程序开始的标号的标号程序结束标志程序结束标志汇编语言程序设计汇编语言程序设计三、数据定义及存储器分配伪操作三、数据定义及存储器分配伪操作格式:格式:变量变量 助记符助记符

7、 操作数操作数 , 操作数操作数 , ; 注释注释 助记符:助记符:DB DW DD DF DQ DTDB DW DD DF DQ DTDATA_BYTE DB 10,4,10H,?DATA_WORD DW 100,100H,-5,?汇编程序在汇编期间在存储器中存入数据汇编程序在汇编期间在存储器中存入数据 - - 0AH0AH 04H04H 10H10H - - 64H64H 00H00H 00H00H 01H01H FBHFBH FFHFFH - -DATA_BYTE DATA_BYTE DATA_WORD DATA_WORD 例:操作数可以是常数或表达式例:操作数可以是常数或表达式汇编语言

8、程序设计汇编语言程序设计操作数也可以是字符串操作数也可以是字符串ARRAY DB HELLO DB AB DW AB 48H48H 45H45H 4CH4CH 4CH4CH 4FH4FH 41H41H 42H42H 42H42H 41H41H ARRAY ARRAY 操作数也可以是地址操作数也可以是地址 PAR1 DW 100,200 PAR2 DW 300,400ADDR_TABLE DW PAR1,PAR2操作数字段还可以使用操作数字段还可以使用复制操作符复制操作符DUPDUP来复制操作数来复制操作数VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3)汇

9、编语言程序设计汇编语言程序设计OPER1 DB ?, ?OPER2 DW ?, ? MOV OPER1, 0 ;字节指令 MOV OPER2, 0 ;字指令OPER1 DB 1, 2OPER2 DW 1234H, 5678H MOV AX, OPER1+1 MOV AL, OPER2 类型不匹配 MOV AX, MOV AX, WORD PTRWORD PTR OPER1+1 OPER1+1 MOV AL, MOV AL, BYTE PTRBYTE PTR OPER2 OPER2 (AX)=3402H (AL)=34H可以看出:同一个变量可以具有不同的类型属性可以看出:同一个变量可以具有不同的

10、类型属性汇编语言程序设计汇编语言程序设计BYTE_ARRAY LABEL BYTEWORD_ARRAY DW 50 DUP (?) tos LABEL WORDLABEL 伪操作:伪操作: name LABEL typename LABEL type BYTE_ARRAY BYTE_ARRAY WORD_ARRAY WORD_ARRAY tos tos 50字0064H0064H0000H0000HMOV WORD_ARRAY + 2, 0MOV BYTE_ARRAY + 2, 0 MOV tos, 0汇编语言程序设计汇编语言程序设计四、表达式赋值伪操作四、表达式赋值伪操作格式:表达式名格式:

11、表达式名 EQU 表达式表达式功能:给表达式赋予一个名字,在程序中用表达式名代替该表达式。功能:给表达式赋予一个名字,在程序中用表达式名代替该表达式。必须先定义后使用,不允许重复定义。必须先定义后使用,不允许重复定义。ALPHA EQU 9BETA EQU ALPHA+18BB EQU BP+8 “ = ” 伪操作伪操作 (功能类似,但允许重复定义功能类似,但允许重复定义)EMP = 7EMP = EMP+1汇编语言程序设计汇编语言程序设计4.3 4.3 上机过程上机过程一个汇编语言源程序从写出到最终执行的简要过程:一个汇编语言源程序从写出到最终执行的简要过程: 编写编写-编译编译-连接连接-

12、执行执行使用文本编辑器(如使用文本编辑器(如Edit、记事本等),用、记事本等),用汇编语言编写汇编语言编写汇编源程序(汇编源程序(*.asm)。n使用汇编语言编译程序对源程序进行汇编,使用汇编语言编译程序对源程序进行汇编,产生产生目标文件目标文件(*.obj);再用连接程序对目标;再用连接程序对目标文件进行连接,生成可在操作系统中直接运文件进行连接,生成可在操作系统中直接运行的行的可执行文件可执行文件(*.exe)。在操作系统中,执行可执行文件中的程序。在操作系统中,执行可执行文件中的程序。可执行文件中包含两部分内容:可执行文件中包含两部分内容: 程序程序(从源程序中的汇编指令翻译过来的(从

13、源程序中的汇编指令翻译过来的机器码)机器码)和数据和数据(源程序中定义的数据);(源程序中定义的数据); 相关的相关的描述信息描述信息(比如:程序有多大、要(比如:程序有多大、要占多少内存空间等)。占多少内存空间等)。操作系统依照可执行文件中的描述信息,将操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如:设置并进行相关的初始化(比如:设置CS:IP指指向第一条要执行的指令),然后由向第一条要执行的指令),然后由CPU执行执行程序。程序。汇编语言程序设计汇编语言程序设计myfile.asm编辑程序编辑程序汇

14、编程序汇编程序连接程序连接程序myfile.crfotherfiles.objmyfile.lstmyfile.objmyfile.mapmyfile.exe记事本记事本MASM.EXELINK.EXE汇编程序与连接程序的功能汇编程序与连接程序的功能汇编程序的主要功能:汇编程序的主要功能:(1) 检查源程序,给出出错信息。检查源程序,给出出错信息。(2) 产生目标文件产生目标文件( (.obj.obj) )和列表文件和列表文件( (.lst.lst) )。(3) 展开宏指令。展开宏指令。连接程序的作用:生成可执行文件连接程序的作用:生成可执行文件(1) 连接多个目标文件。连接多个目标文件。(2

15、) 连接库文件。连接库文件。(3) 处理目标文件中不可直接使用的信息。处理目标文件中不可直接使用的信息。汇编语言程序设计汇编语言程序设计程序经编译连接后变为机器码程序经编译连接后变为机器码汇编语言程序设计汇编语言程序设计课堂练习课堂练习下列程序中,出现逻辑错误的是:下列程序中,出现逻辑错误的是:_ A、 assume cs:code code segment mov ax,2 add ax,ax mov ax,4c00h int 21h code end B、 assume cs:code code segment mov ax,2 add ax,ax code ends end C、 aum

16、e cs:code code segment mov ax,2 add ax,ax mov ax,4c00h int 21h code ends end D、 assume cs:code code segment mov ax,2 add ax,ax mov ax,4c00h int 21h code ends汇编语言程序设计汇编语言程序设计上机调试过程上机调试过程实验环境:实验环境:MASM WINDOWS 集成实验环境集成实验环境 20111、在工具、在工具/选项选项 设置调试工具和程序文件夹设置调试工具和程序文件夹2、编辑源程序、编辑源程序3、运行、运行/编译成目标文件编译成目标文件4

17、、运行、运行/生成可执行文件生成可执行文件5、打开、打开DEBUG调试调试6、运行程序、运行程序汇编语言程序设计汇编语言程序设计使用使用DEBUG调试和运行可执行文件调试和运行可执行文件 在初次使用在初次使用DEBUGDEBUG时,可参照下列步骤进行时,可参照下列步骤进行: : 1、调用、调用DEBUG,装入用户程序,装入用户程序2、U命令反汇编程序,记录代码段与数据段首地址命令反汇编程序,记录代码段与数据段首地址3、R观察寄存器初始状态观察寄存器初始状态 4、以单步工作方式、以单步工作方式T开始运行程序开始运行程序 5、D观察用户程序数据段初始内容观察用户程序数据段初始内容6、继续以单步工作

18、方式运行程序、继续以单步工作方式运行程序 7G连续工作方式运行程序连续工作方式运行程序 8E或或A修改程序和数据修改程序和数据 9运用断点调试程序运用断点调试程序 G汇编语言程序设计汇编语言程序设计程序加载程序加载Debug将程序从可执行文件加载入内存后,将程序从可执行文件加载入内存后,cx中中存放的是程序的长度。存放的是程序的长度。总结总结:程序加载后,程序加载后,ds中存放着程序所在内存区的段地址,这个内中存放着程序所在内存区的段地址,这个内存区的偏移地址为存区的偏移地址为 0 ,则程序所在的内存区的地址为:,则程序所在的内存区的地址为:ds:0;这个内存区的前这个内存区的前256 (100H) 个字节中存放的是个字节中存放的是PSP,dos用来和程序进行通信。从用来和程序进行通信。从 256字节处向后的空间存放的是程序,字节处向后的空间存放的是程序,所以程序的物理地址是:所以程序的物理地址是: SA

温馨提示

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

评论

0/150

提交评论