第四章、汇编语言程序格式课件

上传人:我*** 文档编号:139027876 上传时间:2020-07-19 格式:PPT 页数:84 大小:1.83MB
返回 下载 相关 举报
第四章、汇编语言程序格式课件_第1页
第1页 / 共84页
第四章、汇编语言程序格式课件_第2页
第2页 / 共84页
第四章、汇编语言程序格式课件_第3页
第3页 / 共84页
第四章、汇编语言程序格式课件_第4页
第4页 / 共84页
第四章、汇编语言程序格式课件_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《第四章、汇编语言程序格式课件》由会员分享,可在线阅读,更多相关《第四章、汇编语言程序格式课件(84页珍藏版)》请在金锄头文库上搜索。

1、第四章、汇编语言程序格式,徐承彬,4.1 汇编程序功能,编辑程序,PROGR.ASM 文件,汇编程序,MASM,PROGR.OBJ 文件,连接程序,LINK,PROGR.EXE 文件,在计算机上运行汇编语言的步骤:,用编辑程序建立ASM源文件,用MASM程序把ASM文件转换成OBJ文件,用LINK程序把OBJ文件转换成EXE文件,用DOS命令直接键入文件名就可以执行了,4.2 伪操作,一、处理器选择伪操作,.8086 选择8086指令系统,.286 选择80286指令系统,二、段定义伪操作,一般格式 Name1 segment 语句 Name1 ends Name2 segment 语句 Na

2、me2 ends Name3 segment 语句 Name3 ends end 标号,段定义伪指令的一般格式 1、段定义伪指令SEGMENT/ENDS,格式:,段名 segment 定位类型 组合类型 类别,段名 ends,功能 :,定义一个逻辑段,由若干逻辑 段组成源程序,定位类型,说明段的开始地点的特点,PARA,WORD,BYTE,PAGE,组合类型,告诉连接程序本段与其他段的关系,PUBLIC,STACK,COMMON,PRIVATE,2、段寄存器说明伪指令,格式:,ASSUME 段寄存器名:段名,段寄存器名:段名,功能:,说明段寄存器与段的关系,在一般程序中,该伪指令通常位于代 码

3、段的前面,指明程序中各段所用到 的段寄存器的情况,Data segment Addr dw number Number dw y Count dw ? Data ends Code segment Assume cs:code,ds:data Start: mov ax,data Mov ds , ax Mov cx,0 Mov bx, addr Mov ax, bx,Repeat:test ax,0ffffh Jz exit Jns shift Inc cx Shift: shl ax,1 Jmp repeat Exit: mov count,cx Mov ah,4ch Int 21h Co

4、de ends End start,例如:,数据段寄存器装入初值,三、程序开始和结束,1、程序开始伪指令,NAME,TITLE,使用格式:,NAME module_name,若没有使用NAME,则可用TITLE,格式如下:,TITLE text,如果程序中既无NAME又无TITLE伪指令,则将源文件 名作为模块名。,2、程序结束伪指令,END,使用格式:,END label,标号(label)是程序开始执行的起始地址,Data segment Addr dw number Number dw y Count dw ? Data ends Code segment Assume cs: code

5、,ds:data Start: mov ax,data Mov ds , ax Mov cx,0 Mov bx, addr Mov ax, bx,Repeat:test ax,0ffffh Jz exit Jns shift Inc cx Shift: shl ax ,1 Jmp repeat Exit: mov count, cx Mov ah,4ch Int 21h Code ends End start,例如:,格式:,变两名 助记符 操作数 ;注释,DB:,定义字节,其后的每个操作数占用一个字节,DW:,定义字,其后的每个操作数占用一个字,DD:,定义双字,其后的每个操作数占用两个字,

6、DQ:,定义4个字,其后的每个操作数占用4个字,DT:,定义10个字节,其后的每个操作数占 用10个字节,四、数据定义及存储器分配伪操作,归纳为以下几种情况,1、操作数可以是常量或常量表达式,例如:,X DB 25,42,14H,0,-30,Y DW 123H,610,3A60H,Z DD 3705H,15,X,1 9,2 A,1 4,0 0,E 2,Y,2 3,0 1,3 C,0 0,6 0,3 A,0 5,Z,3 7,0 0,0 0,2、可以定义一个表或一个字符串,例如:110的平方值表可以定义如下 :,PFB DB 1,4,9,16,25,36,49,64,81,100,(2)定义字符串

7、,STRINGS DB GOOD MORNING,(1)定义一个表,strings,G,O,O,D,-,M,O,R,N,I,N,G,字符串定义一般不使用DW伪指令,例如:,DB AB和DW AB在存储器的存储如下,A,B,B,A,3、伪指令后可用操作数“?” 分配并保留空间,不存数据,例如:,A DB 5,?,DB ?,?,10,B DW ?,15,?,A,05,-,-,-,0A,B,-,-,0F,00,-,-,4、可以用操作符DUP来复制一些操作数,格式:,EXPCOUNT DUP(操作数.操作数),例1:,Y1 DB 2 DUP (11,?,15),Y2 DW 3 DUP (2500H,?

8、),汇编后存储情况如下:,Y1 DB 2 DUP (11,?,15),Y2 DW 3 DUP (2500H,?),Y1,0B,-,0F,0B,-,0F,Y2,00,25,-,-,00,25,-,PARA DB 2DUP(3,2DUP(5,7),0),?,03,05,PARA,07,05,07,00,03,05,07,05,07,00,-,例2:,复制操作数可以嵌套,5、可以用DW或DD伪操作把变量或标号的偏移地址 (DW)或由16位段地址和16位偏移地址组成的整个 地址(DD)存入存储器。后者先存偏移量,后存段 地址,例如:,Y1 DW PAR1 DW PAR2 DW PAR3,Y2 DD D

9、ATA1 DD DATA2,Y1,PAR1的偏移地址,PAR2的偏移地址,PAR3的偏移地址,Y2,DATA1的偏移地址,DATA1的段地址,DATA2的偏移地址,DATA2的段地址,6、类型定义伪指令 LABLE,格式:,符号名 LABLE 类型,功能:,指定一个符号名的类型,,说明:变量的类型属性一般指变量的长度 DB(1),DW(2),DD(4) 标号的类型属性一般为NEAR或FAR NEAR(2字节), FAR(4字节),例4.14,OPER1 DB ?,? OPER2 DW ?,? MOV OPER1,0 MOV OPER2,0,例4.15,OPER1 DB 1,2 OPER2 DW

10、 1234H,5678H MOV AX ,OPER1+1 MOV AL ,OPER2,OPER1,01H,02H,OPER2,34H,12H,78H,56H,修改例4.15中的指令,MOV AX,WORD PTR OPER1+1,MOV AL,BYTE PTR OPER2,执行后 AX=3402H,执行后 AL=34H,例4.16,BYTE_ARRAY LABEL BYTE WORD_ARRAY DW 50 DUP(?),-,-,-,-,100个,BYTE_ARRAY,WORD_ARRAY,执行下列指令,-,-,MOV WORD_ARRAY+2,0 MOV BYTE_ARRAY+2,1,00H

11、,00H,01H,五、表达式赋值伪操作EQU(符号定义语句),格式:,符号名 EQU 表达式,伪指令可以把符号名定义为常量,或一个 能求出常数值得表达式,例如:,RT1 EQU 123,FS EQU 32,B5 EQU RT1+1,“=”赋值语句 EMP = 7 EMP = EMP+1,六、地址计数器与对准伪操作,1、地址计数器$,$表示当前地址,例如:,JNE $+6,(1)、在指令中的用法,目标地址等于该指令的首地址+6,(2)、在定义数据中的用法,例4.17,ARRAY DW 1,2,$+4,3,4,$+4,ARRAY,0074H,01H,00H,02H,00H,0078H,7CH,00

12、H,03H,00H,04H,00H,007EH,82H,00H,2、ORG伪操作,从指定地址开始汇编,格式:,ORG constant expression,例如:,Org 10 Vect1 dw 47a5h Org 20 Vect2 dw 0c596h,vect1,0,10,a5h,47h,20,vect2,96h,c5h,名字项,操作项,操作数项,;注释项,一、名字项,标号,变量,某条指令所在存储单元的符号地址,某操作数所在存储单元的符号地址,1、标号,在代码段定义,后面跟“:”,2、变量,在代码段以外的段定义,后不跟“:”,4.3 汇编语言程序格式,标号的3个属性:,段属性、偏移属性、类

13、型属性,标号的3个属性:,段属性、偏移属性、类型属性,Data segment Addr dw number Number dw y Count dw ? Data ends Code segment Assume cs: code,ds:data Start: mov ax,data Mov ds , ax Mov cx,0 Mov bx, addr Mov ax, bx,repeat:test ax,0ffffh Jz exit Jns shift Inc cx Shift: shl ax ,1 Jmp repeat Exit: mov count, cx Mov ah,4ch Int 2

14、1h Code ends End start,例如:,变量,标号,标号,标号,名字项,操作项,操作数项,;注释项,4.3 汇编语言程序格式,二、操作项,指令、伪指令、或宏指令助记符,三、操作数项,由一个或多个项组成,多个操作数 之间用“,”分开,对于指令语句,一般为操作数地址、变量、寄存器、 标号、或表达式,对于伪指令语句或宏指令语句,一般为所要的数据或参数,常用操作符,1、算术操作符,+,-,*,/和MOD,例4.18:,将首地址为BLOCK的字数组的第6个字传送到DX寄存器,MOV DX,BLOCK+(6-1)*2,例4.19:,将ARRAY数组的长度送到CX寄存器,ARRAY DW 1,

15、2,3,4,5,6 ARYEND DW ?,执行指令,MOV CX,(ARYEND-ARRAY)/2,汇编后形成 MOV CX,6,2、逻辑与移位操作符,AND,ORX,OR,NOT,例4.20:,IN AL,PORT_VAL OUT PORT_VAL AND 0FEH,AL,3、关系操作符,EQ、NE、LT、GT、LE、GE,关系操作符计算的结果为逻辑值 结果为真,表示0FFFFH;否则为0,例4.22:,MOV BX,(PORT_VAL LT 5) AND 20)OR(PORT_VAL GE 5) AND 30,4、数值回送操作符,TYPE、LENGTH、SIZE、OFFSET、SEG,将

16、特征或存储器地址的一部分作为数值回送,(1)TYPE,回送变量或标号的类型,变量的类型:,DB(1),DW(2),DD(4),DQ(8),标号的类型:,NEAT(-1)FAR(-2),常数的类型:,0,例4.23:,ARRAY DW 1,2,3 ADD SI,TYPE ARRAY,汇编后形成 ADD SI,2,(2)LENGTH,对于DUP回送分配的单元数,其他情况回送1,例4.24:,FEES DW 100 DUP(0) MOV CX ,LENGTH FEES,汇编后形成 MOV CX,100,例4.25:,FEES DW 1,2,3 MOV CX ,LENGTH FEES,汇编后形成 MOV CX,1,(3)SIZE,回送分配给该变量的字节数,例4.26:,FEES DW

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号