![汇编语言程序设计 第4章 8086 8088汇编语言(格式)_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/6b8d64a6-7a42-4c7f-871f-59be5c24639a/6b8d64a6-7a42-4c7f-871f-59be5c24639a1.gif)
![汇编语言程序设计 第4章 8086 8088汇编语言(格式)_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/6b8d64a6-7a42-4c7f-871f-59be5c24639a/6b8d64a6-7a42-4c7f-871f-59be5c24639a2.gif)
![汇编语言程序设计 第4章 8086 8088汇编语言(格式)_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/6b8d64a6-7a42-4c7f-871f-59be5c24639a/6b8d64a6-7a42-4c7f-871f-59be5c24639a3.gif)
![汇编语言程序设计 第4章 8086 8088汇编语言(格式)_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/6b8d64a6-7a42-4c7f-871f-59be5c24639a/6b8d64a6-7a42-4c7f-871f-59be5c24639a4.gif)
![汇编语言程序设计 第4章 8086 8088汇编语言(格式)_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/6b8d64a6-7a42-4c7f-871f-59be5c24639a/6b8d64a6-7a42-4c7f-871f-59be5c24639a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)1安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)2 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)3第第4章章 汇编语言程序格式汇编语言程序格式教学重点 伪操作伪操作 汇编语言程序格式与开发汇编语言程序格式与开发 变量和标号变量和标号安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)4 汇编语言是一种面向汇编语言是一种面向CPUCPU指令系统的程序设计语言,它指令系统的程序设计语
2、言,它采用指令系统的助记符来表示操作码和操作数,用符号地址采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址表示操作数地址,因而易记、易读、易修改,给编程带来很,因而易记、易读、易修改,给编程带来很大方便。大方便。 用汇编语言编写的程序能够直接利用硬件系统的特性,用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、直接对位、字节、字寄存器、存储单元、I/OI/O端口等进行处端口等进行处理,同时也能直接使用理,同时也能直接使用CPUCPU指令系统和指令系统提供的各种指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间寻址
3、方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度快少,而且执行速度快 。4.1.1 4.1.1 汇编语言汇编语言 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)5 用汇编语言编写的源程序在输入计算机后,需要将用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为译过程称为汇编汇编,完成汇编任务的程序称为,完成汇编任务的程序称为汇编程序汇编程序。 汇编程序有汇编程序有基本汇编基本汇编ASM(Assembler)和)和宏汇编宏汇编MASM(Ma
4、cro Assembler)两种。两种。 汇编程序以汇编程序以汇编语言源程序文件汇编语言源程序文件作为作为,并由它,并由它产生两种产生两种文件:文件:目标程序文件和源程序列表文件目标程序文件和源程序列表文件。 4.1.2 4.1.2 汇编程序汇编程序 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)6汇编语言源程序Hello.asm安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)7汇编后生成三个文件这两个文件是二进制文件安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)8
5、列表文件Hello.lst 列表文件给出机器码和汇编指令的对照,如源程序有错,将指出错误所在。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)94.1.2 汇编程序汇编程序编辑程序编辑程序. ASM 文件文件汇编程序汇编程序. OBJ 文件文件连接程序连接程序. EXE 文件文件Edit 等等MASMLINK汇编语言程序的建立和汇编过程汇编语言程序的建立和汇编过程在计算机上运行汇编语言程序的步骤是:在计算机上运行汇编语言程序的步骤是:用编辑程序(任何一种文本编辑程序)建立用编辑程序(任何一种文本编辑程序)建立ASMASM文件;文件;用用MASMMASM
6、程序把程序把ASMASM文件转换成文件转换成OBJOBJ文件;文件;用用LINKLINK程序把程序把OBJOBJ文件转换成文件转换成EXEEXE文件;文件;用用DOSDOS命令直接键入文件名就可执行该程序;命令直接键入文件名就可执行该程序;安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)104.1.2 汇编程序汇编程序汇编程序的主要功能:汇编程序的主要功能: (1) 检查源程序,给出出错信息。检查源程序,给出出错信息。 (2 2)产生目标文件)产生目标文件(.obj(.obj) )和列表文件和列表文件(.lst(.lst) )。 (3 3)展开宏指令。
7、)展开宏指令。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)11 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)12 4.2.1 4.2.1 汇编语言源程序的分段结构汇编语言源程序的分段结构 数据段数据段堆栈段堆栈段代码段代码段 4.2.2 4.2.2 汇编语言源程序的语句类型汇编语言源程序的语句类型 指令语句指令语句伪指令语句伪指令语句宏指令语句宏指令语句 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)13第第4章:章: 汇编语言源程序格式汇编语言源程序格式 完
8、整的汇编语言源程序由段组成完整的汇编语言源程序由段组成 一个汇编语言源程序可以包含若干个代码段、一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序数据段、附加段或堆栈段,段与段之间的顺序可随意排列可随意排列 需独立运行的程序必须包含一个代码段,并指需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始示程序执行的起始点,一个程序只有一个起始点点 所有的可执行性语句必须位于某一个代码段内,所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内说明性语句可根据需要位于任一段内 通常,程序还需要一个堆栈段通常,程序还需要一个
9、堆栈段 源程序由语句序列构成安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)14例例: 在在屏屏幕幕上上显显示示一一段段信信息息; ;数据段(定义要显示的字符串)数据段(定义要显示的字符串)data segmentdata segmentstringstringdbHello, AdbHello, As ss se em mblbly y !,0dh,0ah,$ !,0dh,0ah,$Data endsData ends; ;代码段(显示字符串的程序)代码段(显示字符串的程序)Code segmentCode segment assume cs:cod
10、e,ds:data assume cs:code,ds:dataStart:mov ax,dataStart:mov ax,data mov ds,ax mov ds,ax mov dx,offset mov dx,offset string string movmov ah,9 ah,9 intint 21h 21h mov mov ah,4ch ah,4ch int int 21h 21hCode endsCode ends end start end startHello, Assembly !程序功能程序功能安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编
11、语言(格式)15第第4章:程序开始章:程序开始 为了指明程序开始执行的位置,需要使用一个为了指明程序开始执行的位置,需要使用一个标号(例题中采用了标号(例题中采用了start标识符)标识符) 连接程序会根据程序起始点正确地设置连接程序会根据程序起始点正确地设置CS和和IP值,根据程序大小和堆栈段大小设置值,根据程序大小和堆栈段大小设置SS和和SP值值 连接程序没有设置连接程序没有设置DS和和ES值。程序如果使用值。程序如果使用数据段或附加段,必须明确给数据段或附加段,必须明确给DS或或ES赋值赋值 大多数程序需要数据段,程序的执行开始应是:大多数程序需要数据段,程序的执行开始应是:start:
12、 mov ax, data;mov ds,ax;设置设置DS安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)16第第4章:程序终止章:程序终止 应用程序执行结束,应该将控制权交还操作系应用程序执行结束,应该将控制权交还操作系统统 汇编语言程序设计中,有多种返回汇编语言程序设计中,有多种返回DOS的方法,的方法,但一般利用但一般利用DOS功能调用的功能调用的4CH子功能实现,子功能实现,它需要的入口参数是它需要的入口参数是AL返回码(通常用返回码(通常用0表表示程序没有错误)示程序没有错误) 于是,应用程序的终止代码就是:于是,应用程序的终止代码就是:m
13、ov ax,4c00hint 21h安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)17第第4章:汇编结束章:汇编结束 汇编结束表示汇编程序到此结束将源程序汇编结束表示汇编程序到此结束将源程序翻译成目标模块代码的过程翻译成目标模块代码的过程 源程序的最后必须有一条源程序的最后必须有一条END伪指令伪指令END 标号标号 可选的可选的“标号标号”参数指定程序开始执行点,参数指定程序开始执行点,连接程序据此设置连接程序据此设置CS和和IP值(例题中采用值(例题中采用了了start标识符)标识符) 不要糊涂程序终止(运行时)和汇编结束(汇编时)是两码事安徽工
14、业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)18第第4章:第一个源程序文件章:第一个源程序文件wjl301.asm;wjl301.asmData segment string string db Hello, Assembly !,0dh,0ah,$db Hello, Assembly !,0dh,0ah,$Data endsCode segment assume ds:data,cs:code start:mov ax, datamov ds,axmov dx,offsetmov dx,offset string stringmovmov ah,9 a
15、h,9intint 21h 21hmov ax,4c00hint 21hCode ends end start安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)19安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)204.3 伪操作(伪指令)伪操作(伪指令) 伪操作是汇编程序对源程序进行汇编时处理的伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始、结束等功能。存储器分配、指示程序开始、结束等功能。 处理器选择
16、伪操作处理器选择伪操作 段定义伪操作段定义伪操作 程序开始和结束伪操作程序开始和结束伪操作 数据定义及存储器分配伪操作数据定义及存储器分配伪操作 表达式赋值伪操作表达式赋值伪操作 地址计数器与对准伪操作地址计数器与对准伪操作 基数控制伪操作基数控制伪操作Directives安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)214.3.14.3.1数据定义及存储器分配伪指令数据定义及存储器分配伪指令 变量变量 助记符助记符 表达式表达式 , ,表达式表达式, , ; ; 注释注释 助记符有:助记符有:DB DW DDDB DW DD DF DF(3 3字)
17、字) DQDQ(4 4字)字) DTDT(1010字节)字节)DATA_BYTE DB 10,4,10H,?DATA_BYTE DB 10,4,10H,?DATA_WORD DW 100,100H,-5,DATA_WORD DW 100,100H,-5,? ? - - 0AH0AH 04H04H 10H10H - - 64H64H 00H00H 00H00H 01H 01H FBHFBH FFHFFH - -DATA_BYTE DATA_BYTE DATA_WORD DATA_WORD Dbdefine byteDwdefine wordDddefine double word安徽工业大学20
18、22-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)224.3.14.3.1数据定义及存储器分配伪指令数据定义及存储器分配伪指令 表达式根据不同的伪操作有不同的形式:表达式根据不同的伪操作有不同的形式: 字节常量以及不确定常量字节常量以及不确定常量“?”; 重复子句:数值表达式重复子句:数值表达式 DUP (DUP (表达式表达式 ,表达式,表达式) ); 串常量;串常量; 以上以上3 3种形式的任意组合。种形式的任意组合。 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)234.3.14.3.1数据定义及存储器分配伪指令数据定义
19、及存储器分配伪指令 表达式根据不同的伪操作有不同的形式:表达式根据不同的伪操作有不同的形式: 除了是字数据外与除了是字数据外与DBDB伪指令的伪指令的、同;同; 地址表达式(此时取的是其偏移地址);地址表达式(此时取的是其偏移地址); 一个或两个字符组成的串常量;一个或两个字符组成的串常量; 以上以上3 3种形式的任意组合。种形式的任意组合。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)244.3.14.3.1数据定义及存储器分配伪指令数据定义及存储器分配伪指令 表达式根据不同的伪操作有不同的形式:表达式根据不同的伪操作有不同的形式: 除了是双字数据
20、外与除了是双字数据外与DBDB伪指令的伪指令的、同;同; 地址表达式(此时分别将偏移地址和段地址存放到存储地址表达式(此时分别将偏移地址和段地址存放到存储器器 中,偏移地址对应低地址);中,偏移地址对应低地址); 一个到四个字符组成的串常量;一个到四个字符组成的串常量; 以上以上3 3种形式的任意组合。种形式的任意组合。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)25ARRAY DB HELLOARRAY DB HELLO DB AB DB AB DW AB DW AB 48H48H 45H45H 4CH4CH 4CH4CH 4FH4FH 41H4
21、1H 42H42H 42H42H 41H 41H ARRAY ARRAY PAR1 DW 100,200PAR1 DW 100,200 PAR2 DW 300,400 PAR2 DW 300,400ADDR_TABLE DW PAR1,PAR2ADDR_TABLE DW PAR1,PAR2VAR DB 100 DUP (?)VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3) DB 2 DUP (0,2 DUP(1,2),3)安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)26OPER1 DB ?, ?OPER1 D
22、B ?, ?OPER2 DW ?, ?OPER2 DW ?, ? MOV OPER1, 0 MOV OPER1, 0 ; ;字节指令字节指令 MOV OPER2, 0 MOV OPER2, 0 ; ;字指令字指令OPER1 DB 1, 2OPER1 DB 1, 2OPER2 DW 1234H, 5678HOPER2 DW 1234H, 5678H MOV AX, OPER1+1 MOV AX, OPER1+1 MOV AL, OPER2 MOV AL, OPER2 类型不匹配类型不匹配 MOV AX, MOV AX, WORD PTRWORD PTR OPER1+1 OPER1+1 MOV A
23、L, MOV AL, BYTE PTRBYTE PTR OPER2 OPER2(AX)=3402H (AL)=34H(AX)=3402H (AL)=34H安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)274.3.24.3.2符号定义伪指令符号定义伪指令 常用的符号定义伪指令有常用的符号定义伪指令有EQUEQU、LABELABE。1 1EQUEQU伪指令伪指令用表达式来定义标识符,即使得标识符等同于表达式。用表达式来定义标识符,即使得标识符等同于表达式。COUNT EQU 8 COUNT EQU 8 ;定义一个符号常量;定义一个符号常量COUNTCOU
24、NT,使其等同,使其等同 于于8 8 ADDR EQU SS:BXSI ADDR EQU SS:BXSI;使得;使得ADDRADDR等同于地址表达式等同于地址表达式SS:BXSI SS:BXSI 例例安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)284.3.24.3.2符号定义伪指令符号定义伪指令 2 2伪指令伪指令与EQU伪指令基本相同,但=伪指令可对同一标识符重新定义。例例COUNT=7;定义COUNT等于7 COUNT=COUNT+1;重新定义COUNT等于8安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格
25、式)294.3.24.3.2符号定义伪指令符号定义伪指令 3 3LABELLABEL伪指令伪指令定义标识符的类型。如果标识符是变量,则类型可以定义标识符的类型。如果标识符是变量,则类型可以是是BYTEBYTE、WORDWORD、DWORDDWORD。如果标识符是标号,则类型可。如果标识符是标号,则类型可以是以是FARFAR、NEARNEAR。例例BYTE_ARRAYLABEL BYTEWORD_ARRAYDW50 DUP(?)安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)304.3.3 4.3.3 段定义伪指令段定义伪指令 段定义伪指令指示汇编程序如
26、何按段组织程序和使段定义伪指令指示汇编程序如何按段组织程序和使用存储器。用存储器。1 1SEGMENTSEGMENT和和ENDSENDS伪指令伪指令安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)31:表示:表示,即段起始地址最低四位必须是即段起始地址最低四位必须是0 0。:表示:表示,即段,即段起始地址的最低一位必须是起始地址的最低一位必须是0 0。:表示:表示。:表示:表示,即起始地址的最低八位必须是即起始地址的最低八位必须是0 0。 默认为默认为 1) 1) 定位类型定位类型:说明段的起始地址应有怎样的边界值:说明段的起始地址应有怎样的边界值 。
27、PARAPARA 、BYTEBYTE、WORDWORD 、DWORDDWORD 、PAGEPAGE 4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)32(1 1) 该段为该段为,在连接时将不与其他同名段合并,在连接时将不与其他同名段合并(2 2) 该段在连接时可以把该段在连接时可以把。 (3 3) 该段在连接时可以该段在连接时可以,由于各同名段有相同的起始地址,所以会产生覆盖。,由于各同名段有相同的起始地址,所以会产生覆盖。(4 4) 把把。各段之间没。各段之间没有间隙。有间隙。(5 5) 同同PUBL
28、ICPUBLIC(6 6) 使段地址是表达式所计算出来的使段地址是表达式所计算出来的1616位值,位值,CSCS除外。除外。 默认为默认为 2) 2) 组合类型组合类型(combine_type(combine_type) )说明程序连接时段合并方法说明程序连接时段合并方法PRIVATEPRIVATE 、PUBLICPUBLIC 、COMMONCOMMON 、ATAT expression 、MEMORYMEMORY、 STACKSTACK 4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)33【例】有两
29、个模块,各模块段定义如下【例】有两个模块,各模块段定义如下模块模块1 1: DATA1DATA1SEGMENTSEGMENT PARA PUBLIC PARA PUBLIC DATA1DATA1M1M1DB 45H DUPDB 45H DUP(0 0)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON SEGMENT PARA COMMON DATA2DATA2N1 DB 102H DUPN1 DB 102H DUP(0 0)DATA2DATA2ENDSENDSEND END 模块模块2 2:DATA1DATA1SEGMENT PARA PUBLIC
30、 SEGMENT PARA PUBLIC DATA1DATA1M2M2DB 104H DUPDB 104H DUP(11H11H)DATA1DATA1ENDSENDSDATA2DATA2SEGMENT PARA COMMON SEGMENT PARA COMMON DATA2DATA2N2N2DB 105H DUPDB 105H DUP(0 0)DATA2DATA2ENDSENDSDATA3DATA3SEGMENTSEGMENTT1T1DB 80 DUPDB 80 DUP(20H20H)DATA3DATA3ENDSENDSENDEND4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大
31、学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)34该段的定位组合方式示意图如图所示。该段的定位组合方式示意图如图所示。 4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)35 3) 3) 类别类别 在引号中给出连接时组成的段组的类型名。在在引号中给出连接时组成的段组的类型名。在4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)364.3.3 4.3.3 段定义伪指令段定义伪指令 2
32、2ASSUMEASSUME伪指令伪指令ASSUME ASSUME 段寄存器名:段名段寄存器名:段名/ /组名组名 ,段寄存器名:段名,段寄存器名:段名/ /组名组名 功能:该伪指令用于通知汇编程序,功能:该伪指令用于通知汇编程序,CSCS、DSDS、SSSS或或ESES被设定为被设定为哪些段的段地址寄存器,从而在汇编时能知道语句中引用的变哪些段的段地址寄存器,从而在汇编时能知道语句中引用的变量、标号或表达式所对应的段。量、标号或表达式所对应的段。ASSUME ASSUME 段寄存器:段寄存器:NOTHINGNOTHINGASSUME NOTHINGASSUME NOTHING这两种格式取消前面
33、由这两种格式取消前面由ASSUMEASSUME指定的段寄存器与段的联系。指定的段寄存器与段的联系。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)37 伪指令伪指令ASSUMEASSUME DATA1DATA1SEGMENTSEGMENTA A DB 1 DB 1,2 2,3 3DATA1DATA1ENDSENDSCODECODE SEGMENT SEGMENT CODECODE ENDS ENDS 其中段寄存器名必须是其中段寄存器名必须是CS ,DS,ES CS ,DS,ES 和和SSSS中的一个。中的一个。段名必须段名必须是由是由SEGMENTSE
34、GMENT定义的段中的段名。定义的段中的段名。4.3.3 4.3.3 段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)38通过寄存器传送通过寄存器传送如:如:MOV AXMOV AX,DATA1DATA1 MOV MOV DSDS,AXAX MOV AX MOV AX,DATA2DATA2 MOV MOV ESES,AXAX(1 1)自动装入)自动装入采用定义段时指定组合类型采用定义段时指定组合类型STACKSTACK参数,在参数,在ASSUMEASSUME语句语句中建立中建立SSSS的关系,这样就可以自动装入的关系,这样就可
35、以自动装入SSSS。安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)39stack1stack1segment parasegment para stackstackdwdw 40h dup(?) 40h dup(?)stack1stack1endsends code1code1segmentsegmentassume cs:code1,assume cs:code1,ss:stack1ss:stack1, , 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)40(2) (2) 程序设置程序设置stack1st
36、ack1segment parasegment para dwdw 40h dup(?) 40h dup(?)toptoplabellabelwordwordstack1stack1endsends code1code1segmentsegmentassume cs:code1,assume cs:code1,ss:stack1ss:stack1, , movmov ax,stack1 ax,stack1mov ss,axmov ss,axmovmov spsp,offset,offset toptop 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)
37、41(1)(1)初始化时装入,根据初始化时装入,根据ENDEND伪指令指示的地址伪指令指示的地址 END END 标号标号 ENDEND语句的作用语句的作用:告诉汇编程序,源程序结束告诉汇编程序,源程序结束指定程序运行时的起始地址,即:指定程序运行时的起始地址,即:segseg 标号标号 cs csoffset offset 标号标号 ipip例:例:END START STARTEND START START的的段地址段地址CSCS偏移地址偏移地址IPIP安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)42(2)(2)自动修改自动修改CSCS和和IP
38、IP执行执行CALL FARCALL FAR和和RETRET指令指令执行执行JMP FARJMP FAR指令指令响应中断及中断返回(响应中断及中断返回(IRETIRET)RESETRESET 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)43data segment ; 定义数据段定义数据段 data ends;-extra segment ; 定义附加段定义附加段 extra ends;-code segment ; 定义代码段定义代码段 assume cs:code, ds:data, es:extrastart: mov ax, data mo
39、v ds, ax ; 段地址段地址 段寄存器段寄存器 code ends end start安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)44code segmentmain proc far assume start: push ds mov ax, 0 push ax retmain endpcode ends end startcode segmentmain proc far assume start: mov ax,4c00h int 21hmain endpcode ends end start安徽工业大学2022-2-5第第4章章 80
40、86/8088汇编语言(格式)汇编语言(格式)454.3.34.3.3段定义伪指令段定义伪指令 3 3段组语句段组语句GROUPGROUP段组名段组名 GROUP GROUP 数据段名数据段名1 1,数据段名,数据段名2 2 功能 :GROUP伪指令可以把模块中若干不同的段集合成一个组,并赋予一个组名,使它们都装在同一物理段(64KB)中。以便以便程序在访问各数据段时使用一个数据段寄存器程序在访问各数据段时使用一个数据段寄存器DSDS。 data1 segment data1 ends data2 segment data2 ends datagroup group data1,data2 c
41、ode segment assume cs:code,ds:datagroup start:mov ax,datagroup mov ds,ax 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)464.3.34.3.3段定义伪指令段定义伪指令 3 3段组语句段组语句GROUPGROUP功能 :GROUP伪指令可以把模块中若干不同的段集合成一个组,并赋予一个组名,使它们都装在同一物理段(64KB)中。ORGORG伪指令伪指令其中表达式的值必须为常量。功能:告知汇编程序,使其后的指令或数据从表达式的值所指定的偏移地址开始存放。安徽工业大学2022-2-5第
42、第4章章 8086/8088汇编语言(格式)汇编语言(格式)475 5程序计数器程序计数器$ $在汇编程序对源程序汇编的过程中,使用地址计数器来保存当前正在汇编指令的偏移地址。当开始汇编或每一段开始时,将地址计数器初始化为,以后汇编过程中,每处理一条指令就增加一个值,此值为该指令所需字节数。地址计数器的值用$表示,汇编语言允许用户直接用$引用地址计数器的值。4.3.34.3.3段定义伪指令段定义伪指令 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)48地址计数器地址计数器 $ :保存当前正在汇编的指令的地址保存当前正在汇编的指令的地址 ORG $+8
43、 ; 跳过8个字节的存储区 JNE $+6 ; 转向地址是 JNE 的首址 +6 JMP $+2 ;转向下一条指令$ 用在伪操作的参数字段:用在伪操作的参数字段:表示地址计数器的当前值表示地址计数器的当前值 ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4 00H00H 01H 00H 02H 00H 7CH7CH 00H00H 03H 00H 04H 00H 82H82H ARRAY ARRAY 007E007E0078007800740074安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)494.3.44.3.4过程定义伪指令过程
44、定义伪指令 一个过程由伪指令一个过程由伪指令PROCPROC和和ENDPENDP来定义来定义 其中过程名是为过程所起的名称,不能省略,过程的类型由其中过程名是为过程所起的名称,不能省略,过程的类型由FARFAR(远过程,为段间调用)和(远过程,为段间调用)和NEARNEAR(近过程,在本段内调用)来(近过程,在本段内调用)来确定。如果缺省类型,则该过程就默认为近过程。确定。如果缺省类型,则该过程就默认为近过程。ENDPENDP表示过表示过程结束。程结束。 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)504.3.54.3.5汇编结束伪指令汇编结束伪指
45、令ENDEND 功能:该伪指令表示源程序的结束,令汇编程序停止汇编。功能:该伪指令表示源程序的结束,令汇编程序停止汇编。 因此,任何一个完整的源程序均应有因此,任何一个完整的源程序均应有ENDEND指令。指令。其中表达式表示该汇编程序的启动地址。其中表达式表示该汇编程序的启动地址。例如:例如:END START END START ;表明该程序的启动地址为;表明该程序的启动地址为STARTSTART 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)51安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)52 一般情
46、况下,汇编语言的语句可以由以下几部分组成:一般情况下,汇编语言的语句可以由以下几部分组成: 名字名字 操作符操作符 操作数操作数 ;注释;注释 名字是一个符号,它表示本条语句的符号地址。名字是一个符号,它表示本条语句的符号地址。操作符可以是机器指令、伪指令和宏指令的助记符。操作符可以是机器指令、伪指令和宏指令的助记符。操作数字段是操作符的操作对象。操作符在完成相应的操作操作数字段是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的操作数时,各时要求有一系列的操作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。操作数之间用逗号隔开。注释字段是以注释字段
47、是以“;”开头的说明部分,可以用英文或者中文开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分书写。注释字段是语句的非执行部分 。 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)53 名字名字(Identifier)一般最多由)一般最多由31个字母、数字及个字母、数字及规定的特殊符号(如规定的特殊符号(如 _、$、?、)组成,不能)组成,不能以数字开头。默认情况下,汇编程序不区别标识以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写符中的字母大小写 标号标号是反映硬指令位置(逻辑地址)和属性的标是反映硬指令位置(逻辑地址)和属
48、性的标识符,后跟一个冒号分隔识符,后跟一个冒号分隔 变量变量是反映伪指令位置(逻辑地址)和属性的标是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号识符,后跟空格或制表符分隔,没有冒号 一个源程序中,每个标识符的定义是唯一的,还一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的不能是汇编语言采用的保留字保留字名字名字 操作操作 操作数操作数 ; 注释注释 4.4.14.4.1 名字项名字项安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)54保留字 保留字(保留字(Reserved Word)是汇编程序已经利)是汇编程
49、序已经利用的标识符(也称为关键字),主要有:用的标识符(也称为关键字),主要有: 硬指令助记符硬指令助记符例如:例如:MOV、ADD 伪指令助记符伪指令助记符例如:例如:DB、DW 操作符操作符例如:例如:OFFSET、PTR 寄存器名寄存器名例如:例如:AX、CS 预定义符号预定义符号例如:例如:data 汇编语言大小写不敏感安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)55变量和标号的属性 变量和标号是用户自定义的标识符。变量和标号是用户自定义的标识符。变量变量指向一条指向一条伪指令,伪指令,标号标号指向一条硬指令。名字和标号一经使指向一条硬指令
50、。名字和标号一经使用便具有属性:用便具有属性:段、偏移段、偏移名字和标号对应存储单元的逻辑名字和标号对应存储单元的逻辑地址,含有段地址和偏移地址;地址,含有段地址和偏移地址; 类型类型变量名的类型可以是变量名的类型可以是BYTE(字节)、(字节)、WORD(字)和(字)和DWORD(双字)等;标号、段(双字)等;标号、段名、子程序名的类型可以是名、子程序名的类型可以是NEAR(近)和(近)和FAR(远远),分别表示段内或段间调用,分别表示段内或段间调用 汇编程序提供有关的操作符,以便获取这些属性值汇编程序提供有关的操作符,以便获取这些属性值安徽工业大学2022-2-5第第4章章 8086/80
51、88汇编语言(格式)汇编语言(格式)56操作项 指令(指令(Instruction)使使CPU产生动作、并产生动作、并在程序执行时才处理的指令在程序执行时才处理的指令硬指令就是第硬指令就是第3章学习的处理器指令,与具体章学习的处理器指令,与具体的处理器有关、与汇编程序无关的处理器有关、与汇编程序无关 伪指令(伪指令(Directive)不产生不产生CPU动作、在动作、在程序执行前由汇编程序处理的说明性指令程序执行前由汇编程序处理的说明性指令伪指令与具体的处理器类型无关,但与汇编程伪指令与具体的处理器类型无关,但与汇编程序有关。不同版本的汇编程序支持不同的伪指序有关。不同版本的汇编程序支持不同的
52、伪指令令 硬指令和伪指令采用易于记忆的符合表达,这就是助记符名字名字 操作操作 操作数操作数 ; 注释注释安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)57 常数 寄存器 标号 变量 表达式名字名字 操作操作 操作数操作数 ; 注释注释4.4.2 4.4.2 操作数项操作数项 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)58常数 指由指由10、16、2和和8进制形式表达的数值,各种进进制形式表达的数值,各种进制的数据以后缀字母区分,默认不加后缀字母的制的数据以后缀字母区分,默认不加后缀字母的是十进制数是十
53、进制数十进制十进制由由0 9数字组成,以字母数字组成,以字母D(d)结)结尾(缺省情况可以省略)尾(缺省情况可以省略)100,255D十六进制十六进制由由0 9、A F数字组成,以字母数字组成,以字母H(h)结尾,以字母开头的常数需要)结尾,以字母开头的常数需要加一个前导加一个前导064H,0FFH0B800H二进制二进制由由0和和1两个数字组成,以字母两个数字组成,以字母B(b)结尾结尾01100100B安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)59 字符串常量是用单引号或双引号括起来字符串常量是用单引号或双引号括起来的单个字符或多个字符的单个
54、字符或多个字符 其数值是每个字符对应的其数值是每个字符对应的ASCII码值码值 例如:例如:d(等于(等于64H)AB(等于(等于4142H)Hello, Assembly !安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)60变量变量 变量变量实质上是指内存单元的数据,虽然内存单实质上是指内存单元的数据,虽然内存单元地址不变,但其中存放的数据可以改变元地址不变,但其中存放的数据可以改变 变量需要事先定义才能使用变量需要事先定义才能使用 变量定义(变量定义(Define)伪指令为变量申请固定长)伪指令为变量申请固定长度为单位的存储空间,并可以同时将相应
55、的存度为单位的存储空间,并可以同时将相应的存储单元初始化储单元初始化 定义后的变量可以利用变量名等方法引用其中定义后的变量可以利用变量名等方法引用其中的数据,程序代码中的数据,程序代码中 通过变量名引用其指向的首个数据通过变量名引用其指向的首个数据 通过变量名加减位移量存取以首个数据为基地址的通过变量名加减位移量存取以首个数据为基地址的前后数据前后数据 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)614.4.14.4.1 名字项名字项 名字可以是名字可以是标号标号/ /变量(变量(LABEL/EQU)LABEL/EQU):段值、偏移量、类型三种属性
56、段值、偏移量、类型三种属性4.4.2 4.4.2 操作数项操作数项 操作数项可以是常数、寄存器、标号、变量或由多个表达式组成。操作数项可以是常数、寄存器、标号、变量或由多个表达式组成。 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)62表达式操作符:表达式操作符:(1) 1) 算术操作符算术操作符: 、 、 、 、ModVIDEO_BUF DB 25*80*2 DUP(?)ARRAY DW 1,2,3,4,5,6,7ARYEND DW ? MOV CX, (ARYEND-ARRAY)/2ADD AX, ARRAY+(6-1)*2 ; 符号地址常数 有
57、意义 ; 时意义不明确MOV AX, BX+1 ; MOV AX, BX+1 ; 寄存器间接寻址 4.4.2 4.4.2 操作数项操作数项 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)63OPR1 EQU 25 ;00011001BOPR2 EQU 7 ;00000111BAND AX, OPR1 AND OPR2(2) (2) 逻辑和移位操作符逻辑和移位操作符: AND、OR、XOR、NOT、SHL、SHR; AND AX,1IN AL, PORT_VAL ;61HOUT PORT_VAL AND 0FEH, AL ;60HMOV AX, 0FF
58、FFH SHL 2; MOV AX,0FFFCH 4.4.2 4.4.2 操作数项操作数项 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)64 4.4.2 4.4.2 操作数项操作数项 (3) (3) 关系操作符关系操作符: EQ、NE、LT、LE、GT、GE计算结果为计算结果为逻辑值逻辑值:真真 0FFFFH0FFFFH 假假 0000H0000HX: Y: 若若 128 (真真) 汇编结果:汇编结果: MOV FID, -1若若 128 (假假) 汇编结果:汇编结果: MOV FID, 0MOV FID, (OFFSET Y - OFFSET X
59、) LE 128安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)65(4) (4) 数值回送操作符数值回送操作符: OFFSET、SEG、TYPE、 LENGTH、SIZE SIZE SIZE 变量变量功能:功能:LENGTH LENGTH * * TYPE TYPEOFFSETOFFSET / SEGSEG 变量变量 / 标号标号功能:回送变量或标号的偏址功能:回送变量或标号的偏址 / / 段址段址TYPETYPE 变量变量 / 标号标号 / 常数常数 DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR
60、 FAR 常数常数 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0LENGTH LENGTH 变量变量功能:回送由功能:回送由DUP定义的定义的变量的单元数,其它情况回送变量的单元数,其它情况回送1 1 4.4.2 4.4.2 操作数项操作数项 安徽工业大学2022-2-5第第4章章 8086/8088汇编语言(格式)汇编语言(格式)66ARRAY DW 100 DUP (?)TABLE DB ABCD ADD SI, TYPE ARRAY ; ADD SI, 2ADD SI, TYPE TABLE ; ADD SI, 1MOV CX, LENGTH ARRA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 执行案件代理合同(2篇)
- 八年级上册道德与法治第二单元 遵守社会规则 复习听课评课记录
- 冀教版历史九年级上册第2课《古代印度文明》听课评课记录
- 新版(修订版)北师大版小学五年级数学下册听评课记录精写
- 苏科版数学八年级上册4.3《实数》听评课记录2
- 湘教版数学七年级上册《2.5整式的加法和减法(1)》听评课记录5
- 苏教版数学九年级上册听评课记录《2-1圆(2)》
- 苏科版数学八年级上册《4.2 立方根》听评课记录
- 华师大版历史九年级上册第6课《古希腊罗马文化》听课评课记录
- 人民版道德与法治七年级上册5.1《心中有他人》听课评课记录
- 农业行政执法现状及相关法律法规课件
- 班组月度考核评分表
- 部编版一年级下册《道德与法治》教学工作计划及全册教案
- 三重一大事项决策流程
- 精密配电列头柜介绍讲义
- 广东部分地区的暴雨强度公式
- 授居家二众三皈、五戒仪规
- 装修工程竣工验收报告模板
- 简单娱乐yy频道设计模板
- 防止机组非计划停运措施(锅炉专业)
- 最常用汉字个
评论
0/150
提交评论