

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章汇编语言及程序设计本章要求:1.通过汇编语言程序设计进一步掌握80 x86指令系统。2掌握汇编语言程序设计方法,包括:分支、 循环、子程序、宏、结构和记录等的设计。3.熟悉汇编语言上机过程。4.了解汇编语言源程序的结合、汇编语言和 高级语言的接口。3. 1汇编语言汇编语言的语句一般有2类:指令语句有其对应的机器指令,汇编程 序在对源程序进行汇编时,把指令语句翻译成机 器指令。伪指令语句伪指令一般没有其对应的机 器指令(简化的个别伪指令除外),只是指示汇编程 序如何汇编源程序,包括符号的定义、变量的定 义及段的定义等。33. 1. 1汇编语言格式标号:助记符 操作数;注释 伪指令语句格式名
2、字定义符参数;注释名字可以使用英文字母(大小写),不超 过31个字符。 第一个字符不允许为数字, 另外可 以使用特殊字符? 、$、(不 能作为第一个字符)。名字不允许使用指令助记符及伪指令定义符。名字可以是代码段、数据段、或堆栈段的逻 辑段名、变量名、过程或符号名等。定义符 规定了伪指令的功能,汇编和连接 时有意义。参数 参数可以为0n个。指令语句格式52.标号和变量类型(1)标号:定义指令的逻辑地址,具有段地 址、偏移地址和类型属性。其类型属性如下:NEAR指示近程(段内)标号,该标号只能 为本段内指令使用;FAR指示远程(段间)标号,该标号可以为 其它段指令使用。6(2)变量:定义数据的逻
3、辑地址,具有段、 偏移地址和类型属性。其类型属性如下:BIT:定义位,但分配一个字节存储空间;BYTE:定义字节存储空间;WORD:定义字存储空间;DWORD:定义双字存储空间;FWORD:定义三字存储空间;QWORD:定义四字存储空间;6TBYTE:定义五字存储空间。73. 1. 2简化的段定义伪指令MASM提供简化的段定义伪指令,使用指定 的内存模式编程。MODEL存储模式说明见表3 .l(P61)o预处理符号:在程序中使用预处理符号可以 表示其实际值。常用预处理符号见表3.2(P61)oMODEL SMALL;内存模式说明(P61表3.1) DATA:定义近程数据段,MS-DOS下64K
4、B,Windows NT的FLAT模式下为512MB,存储经常使用的数据STACK 1000;定义堆栈段,其后口J跟参数,定义堆栈人小BUF DB 10H586CODE1;STARTUP选择80586指令集定义程序段指示程用开始,该伪指令后跟第一条可执行指令; 初始化DS和SS寄存益值相等(除非为FARSTACK)MOV AL, BUFEXIT:使程序返冋DOS操作系统,产生下列指令码:MOV AL, VALUEMOV AH, 4CHINT 21HEND93. 1. 3完整段定义伪指令(适用JMASM 和 TASM)例3 1完格段定义絡构,STACK SEG SEGMENT STACKDW 1
5、00 DUP ?)STACK.SEG ENDSEXTRA_SEG SEGMENTBUF DB 100DUP(?)EXTRA.SEG ENDSDATA.SEG SEGMENT BLOCK DB IOOODUP(?)DATA_SEG ENDSCODE.SEG SEGMENTASSUMI CS: CODE.SEGASSUME DS: DATA.SEGASSUME ES: EXTRA_SEGASSUME SS:STACKjSEG START:MOV AX DATA_SEGMOV DS, AXMOV AX. EXTRA_SEGMOV ES AXMOV AX. STACK.SEG MOV SS. AXMO
6、V AH. 4CHINT 2IHCODE.SEG ENDSEND ST/RT1.完整段定义伪指令格式:段SEGMENT 1 屈性11段名 ENDS属性 段对齐属性段只读属性 段介并属性 段长度属性 J段类别展性(P62)2.段寄存器定义伪指令格戌:ASSUME 段奇存舲段名,段 寄存器:段名功能:规定给定段的段地址寄器,段 寄存器包括 CS、DS. ES、SS、FS. GSo3.程序结束伪指令格式:END 第一条可执行语句标号 功能:指示汇编程序.源程序到此结束。 标号为第条可执行语句的标号,即程序的 启动地址。1031. 4常用伪指令常用伪指令1变量名DB/BYTE表达式,表达式表达式定义的
7、字节(8位)表达式可以是常数、字符(用表 示)等。例3.2 ONE DB 10H, ABC 2变量名DW/WORD表达式,表达式表达式定义的字(16位)表达式可以是常数、字符、标号或变量 名(存标号或变量名的偏移地址)等。例3.3 TWO DW NEXT;NEXT可以是标号或变量名, 变量TWO存放标号或变量名的偏移地址。113变量名DD/DWORD表达式,表达式.表达式定义的双字(32位)表达式可以是常数、字符、 标号或变量名(存标号或变量名的段值和偏移地址) 等。例3.4 THREE DD NEXT4.变量名1DF/FWORD表达式,表达式 表达式定义的3字(48位) 表达式常在80386
8、以上表示指 针变量,如标号或变量名的段值和偏移地址。125. 变量名JDQ/ QWORD表达式 ,表达式表达式定义的4字(64位)表达式可以是常数、字符、 标号或变量名(存标号或变量名的段值和偏移地址) 等。6.变量名IDT/ TBYTE表达式,表达式表达式定义的5字(80位)表达式可以是常数、字符、 标号或变量名(存标号或变量名的段值和偏移地址) 等。7变量名SBYTE表达式,表达式表达式 定义的字节(8位)表达式为有符号数,一128+127o;8.变量名JSWORD表达式,表达式表达式層定义的字(16位)表达式为有符号数,一32768+32767。9.变量名JSDWORD表达式,表达式表达
9、式定义的双字(32位)表达式为有符号数。1410. COUNT DUP(表达式,表达式.)DUP为重复操作符,COUNT为重复次数, 表达式可以为常数、字符(用于初始化内存单元) ” 和?(用于保留内存单元),在表达式中DUP还可 以嵌套使用。例3.5 ONE DB 256 DUP(1, 2, 4DUP(?)ONE变量所定义的存储区间重复存放数据(1,2,?,?,?,?),共占用1536 (256*6)字节存储单元。1511.类型PTR地址表达式I类型可以是BYTE(字节)、WORD(字)、DWORD(双字)、FWORD (3字)、QWORD (4字)、TBYTE (5字)、NEAR(近程)、
10、FAR(远程)。PTR规定了地址表达式的类型。例3.6 INC DWORD PTRBXH.12.SEG变量名或标号名 规定传送标号或变量名的段值。例3.7 MOV AX, SEG TARGET13. OFFSET变量名或标号名规定传送标号或变量名的偏移地址值。例3.8 MOV AX, OFFSET TARGET1714TYPE变量名或标号名规定传送标号距离类型的值或变量数据类型 的值。该类型传送的值见表3.7(P64)O例3.9 N1 DB 20H,30H, 40HN2 DW 1234H, 5678HALP:MOVAL, TYPE N1;AL=1MOV AX, TYPE N2;AX=2MOV
11、BH, TYPE ALP;BH=0FFH (-1)1815LENGTHOF数组名返回数组的反度(元素个数)。例3.10 ARRAY DW 5DUP (0)NUM DD 3, 5, 7, 9, 12, 45, 89LENARRAY EQU LENGTHOF ARRAY;LENARRAY=5LENNUM EQU LENGTHOF NUM;LENNUM=716. SIZEOF数组名返回数组所包含的总字节数。DD 3, 5, 7, 9, 12, 45, 89EQU SIZEOF ARRAY;SIZEARRAY=10EQU SIZEOF NUM:SIZENUM=282017.变量名偏移值 索引值表示指定
12、类型元素的偏移值。例3.12 ARRAY BYTE 12, 23, 34, 45, 56MOV BX, 0MOV AL, ARRAYBX+1;AL=23ARRAY 0的值是12,ARRAY 3的值是45,19?例3.11 ARRAYDW 5DUP (0)NUMSIZEASIZENUMARRAY 41的值是56;2118. LABEL标号名或变量名 为下一条语句定义的标号或变量取别名。例3.13 VABB LABEL BYTEVABW DW 50 DUP (0):段值和偏移地址值相同,但数据类型不同。例3.14 LABF LABEL FARLABN:MOV AX, BX段值和偏移地址值相同,但距
13、离类型不同。LABF允许作为其它代码段中的转移或调用指令 的目的标号。2219.符号名EQU表达式指定的符号名表示个指定值,该符号名可 ;在程序中使用。例3.15 A EQU 1024;A的值为1024。B EQU BX+SI+1000H;B代农指定的寻址方式。C EQU JCXZ;C代表指定的助记符。2320.变量名EQU THIS属性 标号名EQU THIS类型将THIS右边指定的数据类型或距离类型赋予EQU左边的变量或标号。例3.16 VABB EQU THIS BYTEVABW DW 100 DUP (?)段值和偏移地址值相同,但数据类型不同。例3.17 LABF EQU THIS F
14、ARLABN : MOV CX, 100段值和偏移地址值相同,但距离类型不同。LABF允许作为其它代码段中的转移或调用指令的 目的标号。2421.HIGH data;传送data的高位字节。LOW data;传送data的低位字节。例3.18 KI EQU 1234HMOV AL, LOW KI;AL=34HMOV AH, HIGH KI;AH=12H2522. SHORT标号名指定转移指令是在下一条指令地址的127个 字节范围内。例3.19 JMP SHORT TABINC ALIIITAB:MOV AL, BL26J 23.地址计数器$:汇编时,地址计数器$代表p当前指令在程序中的偏移地址
15、用$来表示,即计数到_该指令的计数值。: 例3.20 BUF BYTE 12H, 25H, 48HLBUF EQU $ BUFfl;LBUF等于BUF的长度3。I26IIIt,LP:JMP $+2;$+2为下条指令地址,i所以转移到下一条指令去执行。MOV AL, 10HII2724USES REG指定执行过程时需要保护的寄存器, 在过 程执行开始,将指定的寄存器保存到堆栈,在 过程结束返回前,从堆栈弹出数据恢复原寄存 器内容。USES AX, BX等价于指令PUSH AXPUSH BXIIIPOP BXPOP AX2825. USE16 :指定使用16位的指令模式和数 据尺寸。26. USE
16、32 :指定使用32位的指令模式和数 据尺寸。在80386-Pentium中,在代码段后面可增加 段长度伪指令USE16和USE32,通知汇编程序微 处理器使用16位或32位指令模式。如果 在MODEL之前指定386-586,USER32为缺省 值;如果在MODEL之前未指定386586,贝IJ USER16为缺省值。为DOS环境开发的软件必须使用USE16指示符。2927.类型名TYPEDEF距离属性PTR类型属性:用于 定义指针变量的类型。例3.21 PBYTE TYPEDEF PTR BYTE;指向字节类型的指针NPWORD TYPEDEF NEAR PTR WORD:指向字类型的近程指
17、针Al BYTE OK*;Al为字节类型变量A2 PBYTE Al;A2为指向字符串的指针51 WORD 100 DUP (? );S1为字类型变量52 NPWORD SI;S2为为指向字数组的指针28. ORG offset addr:指定段内的起始地址。例3.22 ORG 1000H;从偏移地址为1000处开始执行程序303. 1. 5汇编程序两种基本格式汇编程序两种基本格式汇编程序使用两种基本格式开发软件。一种方法使用完整段定义。通常能较好地覆 盖汇编语言控制任务,适用于大规模复杂汇编程 序的软件开发。另一种使用简化段定义(模型),其任务模 型很容易理解及使用,模型适用于与高级语言的 交
18、叉调用,例如在C/C+高级语言使用的汇编子 程序。31例 3.23将 BLOCK 1 单元开始的 100个字节的内容传送到 BLOCK2 开始的单元中。 MODEL SMALLSTACK 200DATA;定义堆栈段;定义数据段EA机器码00000064 BLOCK 1DB 100 DUP (?)0064 0064 BLOCK2DB 100 DUP (?) CODE:定义代码段0(X)()B8START: MOV AX, DATA:装入 ES 和 DS,将数据段和0003 SECOMOV ES, AX附加段看作一个段0005 8ED8MOV DS, AX0007 FCCLD:DF=0,地址递増移动数据()(X)8BE (X)()()MOV SI, OFFSET BLOCK 1000B BF0064MOV DI, OFFSET BLOCK2000E B9 0064MOV CX, 1000011F3/A4REP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产买卖中介合同
- 性格色彩分析理论及应用
- 中级经济师考试的创新意识培养与试题及答案
- 2025年市政工程考试知识点剖析试题及答案
- 建筑泥工劳务分包合同
- 农村生物技术应用研究开发合同
- 员工关系在公共关系中的角色试题及答案
- 掌握中级经济师考试复习的主动权与试题及答案
- 行政管理专科公共关系学全面试题及答案
- 维护技术基础考试试题及答案
- 【范本】公务员辞去公职申请表(标准模板)
- NB/T 10956-2022矿用往复式注浆泵
- GB/T 6417.1-2005金属熔化焊接头缺欠分类及说明
- GB/T 3780.21-2016炭黑第21部分:筛余物的测定水冲洗法
- GB/T 26251-2010氟和氟氮混合气
- 汽车运用与维修技术毕业论文
- 无机化学氧族元素课件
- 储煤场管理制度(6篇)
- 家校共育一年级家长会ppt
- 迪士尼宝藏湾(概念设计)课件
- 齿轨卡轨车课件
评论
0/150
提交评论