微机原理与应用第七章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《微机原理与应用第七章.ppt》由会员分享,可在线阅读,更多相关《微机原理与应用第七章.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.1 宏汇编语言的基本语法宏汇编语言的基本语法7.2 伪指令伪指令7.3 宏指令宏指令7.4 系统功能调用系统功能调用7.5 汇编程序的功能及汇编过程汇编程序的功能及汇编过程汇编程序:用来把汇编语言编写的程序自动翻译成目的汇编程序:用来把汇编语言编写的程序自动翻译成目的 程序的软件程序的软件标号名标号名伪指令伪指令操作数操作数;注释;注释,7.1.1 伪指令语句格式伪指令语句格式没有冒号!没有冒号!常量名常量名变量名变量名过程名过程名结构名结构名记录名等记录名等常数常数字符串字符串常量名常量名变量名变量名标号标号专用符号(如专用符号(如BYTE、FAR)内存数据定义伪指令内存数据定义伪指令常
2、数常数:没有任何属性的纯数值。在程序运行中不发生变化。:没有任何属性的纯数值。在程序运行中不发生变化。如:如:10010011B、0A5H、”ZHIFUCHUAN”变变 量量:表示存储单元,单元中的数在程序运行期间随时:表示存储单元,单元中的数在程序运行期间随时 可以修改。可以修改。变量名变量名:存放数据单元的符号地址:存放数据单元的符号地址标标 号号:表示存储单元,单元中存放的是机器指令代码:表示存储单元,单元中存放的是机器指令代码段属性(段属性(SEG):变量或标号对应存储单元所在段的段值):变量或标号对应存储单元所在段的段值偏移量属性(偏移量属性(OFFSET):变量或标号对应存储单元的
3、起始地址的段内偏移):变量或标号对应存储单元的起始地址的段内偏移类型属性(类型属性(TYPE):):变量类型主要是字节(变量类型主要是字节(BYTE)、字()、字(WORD)、双字()、双字(DWORD)标号类型主要是近(标号类型主要是近(NEAR)和远()和远(FAR)标号标号有三个属性:有三个属性:段地址段地址:即标号所在段的段地址;:即标号所在段的段地址;偏移量偏移量:标号所代表存储单元的段内偏移地址;:标号所代表存储单元的段内偏移地址;类类 型型:NEAR或或FAR:NEAR表示标号所在语句与转移指令表示标号所在语句与转移指令/调用指令在同一码段内调用指令在同一码段内,跳转时跳转时 只
4、需改变只需改变IP即可。即可。FAR标号所在语句与转移指令标号所在语句与转移指令/调用调用 指令不在同一代码段内。指令不在同一代码段内。若没有对类型进行说明若没有对类型进行说明,默认为默认为NEAR。标号通常作为标号通常作为转移指令转移指令或或CALL指令指令的转移地址。的转移地址。变量变量 变量变量即内存中的存储单元或数据区。即内存中的存储单元或数据区。变量名变量名是存储单元是存储单元(数据区数据区)的符号地的符号地 址或名字。址或名字。变量也有三个属性变量也有三个属性:段地址段地址变量所在段的段地址变量所在段的段地址偏移量偏移量变量单元地址与段首地址之间的位移量。变量单元地址与段首地址之间
5、的位移量。类类 型型有有BYTEBYTE、WORDWORD和和DWORDDWORD三种。三种。变量在程序中作为变量在程序中作为存储器操作数存储器操作数被引用。被引用。标号和变量名的使用规则标号和变量名的使用规则组成:组成:A-Z(不分大小写不分大小写),0-9,?._$不能以数字开头,句号不能以数字开头,句号(.)只能作为首字符只能作为首字符长度小于长度小于31个字符个字符不能与保留字不能与保留字(指令助记符、伪指令、预定义符号等指令助记符、伪指令、预定义符号等)重名重名不能重复定义不能重复定义例如:例如:正确的:正确的:LP1,AGAIN,NEXT,_GO,OK_1 错误的:错误的:4M,L
6、OOP,AAA,#HELP,+ONE(P457)汇编语言的一个实例汇编语言的一个实例:hello.asm datadata SEGMENT SEGMENTHello DB Hello,world!,0DH,0AH,$data data ENDSENDSprogprog SEGMENT SEGMENT ASSUME CS:prog,DS:datastart:MOV AX,data MOV DS,AX LEA DX,hello;取字符串首地址取字符串首地址 MOV AH,9 INT 21H;显示字符串显示字符串 MOV AH,4CH INT 21H;退回退回DOSprogprog ENDS END
7、S END END startstart名字标号ORG 100HX DB 33HY DW 0A65DH变量名变量名MOV AL,XMOV BX,Y表达式:由操作数和运算符组成的式子表达式:由操作数和运算符组成的式子算术运算符:算术运算符:+、-、*、/、MOD(除法取余)、(除法取余)、SHL(左移)、(左移)、SHR(右移)(右移)例:例:MOV AX,100*4+5 ;AX=405 逻辑运算符:逻辑运算符:AND、OR、NOT、XOR例:例:24H OR 0FH=2FH按位运算按位运算 关系运算:关系运算:EQ、NE、LT、LE、GT、GE例:例:MOV AX,1234H GT 1024H
8、关系运算结果总是关系运算结果总是一个数值。若关系不一个数值。若关系不成立,则结果为成立,则结果为0,若,若关系成立,则结果关系成立,则结果为为0FFFFHMOV AX,0FFFFH例例1)算术运算符算术运算符 用于数字表达式:用于数字表达式:MOV AX,4*1024汇编后的形式为汇编后的形式为:MOV AX,4096 用于地址表达式用于地址表达式,例例:LEA SI,TAB+3若若TAB的偏移地址为的偏移地址为1000H,则汇编后的形式为:,则汇编后的形式为:LEA SI,1003H 例例2)逻辑运算符逻辑运算符 逻辑运算符只能用于数字表达式中。逻辑运算符只能用于数字表达式中。例:例:MOV
9、CL,36H AND 0FH 经汇编后:经汇编后:MOV CL,06H注意,不要把逻辑运算符与逻辑运算指令混淆:注意,不要把逻辑运算符与逻辑运算指令混淆:例:例:AND AX,3FC0H AND 0FF00H 汇编后源操作数被翻译为:汇编后源操作数被翻译为:3F00H,所以上述指,所以上述指令与令与AND AX,3F00H等价。等价。例例3)关系运算符关系运算符EQ、NE、LT、GT、LE、GE关系运算的结果是一个逻辑值:关系运算的结果是一个逻辑值:真真或或假假 关系为关系为真真,结果为全结果为全1 关系为关系为假假,结果为全结果为全0例:例:MOV BX,PORT GT 300H 若若POR
10、T的值大于的值大于300H,则汇编后为:则汇编后为:MOV BX,0FFFFH 否则汇编后为:否则汇编后为:MOV BX,0 分析运算符(数值回送操作符):分析运算符(数值回送操作符):SEG(计算段基址)(计算段基址)OFFSET(计算偏移地址)(计算偏移地址)TYPE(计算符号类型值(计算符号类型值;P157)SIZE(计算符号名分配的字节数)(计算符号名分配的字节数)(=TYPE*LENGTH)LENGTH(计算符号名分配的数)(计算符号名分配的数)例例2:把:把VARW的偏移地址送的偏移地址送BX MOV BX,OFFSET VARW例例3:假设:假设VARW变量是字变量,把变量是字变
11、量,把VARW的类型值送的类型值送AL MOV AL,TYPE VARW ;AL=2例例1:把:把VARW所在段的段值送所在段的段值送AX MOV AX,SEG VARW变量名变量名例例4)取地址运算符取地址运算符SEG、OFFSETSEG:取变量:取变量/标号的段地址标号的段地址OFFSET:取变量:取变量/标号的偏移地址标号的偏移地址例:例:VAR DB 12H MOV BX,OFFSET VAR;取变量;取变量VAR的偏移地址的偏移地址 MOV AX,SEG VAR ;取变量;取变量VAR的段地址的段地址注意,以下指令的异同:注意,以下指令的异同:MOV BX,OFFSET VAR LE
12、A BX,VAROFFSET只能取静态的偏移地址;只能取静态的偏移地址;LEA指令即可取静态的偏移地址,也可取动态的偏移地址。指令即可取静态的偏移地址,也可取动态的偏移地址。例例5)取值运算符取值运算符TYPE、LENGTH、SIZETYPE 取变量的类型(取变量的类型(1,2,4)LENGTH 取所定义变量的长度取所定义变量的长度 (即变量中元素的个数)(即变量中元素的个数)SIZE 取所定义存储区的字节数取所定义存储区的字节数 (=TYPE*LENGTH)例:例:VAR DW 1,2,3,4,5 则则 TYPE VAR=2 LENGTH VAR=5 SIZE VAR =10执行执行:MOV
13、 CX,SIZE VAR ;(CX)=10 组合运算符(属性操作符)组合运算符(属性操作符)定义符号名为新类型定义符号名为新类型PTR格式:格式:PTR 功能:用于指定或临时改变变量或标号的类型功能:用于指定或临时改变变量或标号的类型例:例:MOV WORD PTR SI,1 ;指明字类型;指明字类型指定新类型指定新类型THIS格式:格式:THIS 功能:为某个符号名建立新类型功能:为某个符号名建立新类型例:例:LABC EQU THIS BYTE MOV LABC,AL执行后执行后SI=01SI+1=00属性运算符属性运算符PTR用来指定地址操作数的类型。用来指定地址操作数的类型。格式:格式
14、:PTR 类型类型BYTE,WORD,DWORD,NEAR,FARBYTE、WORD、DWORD 用于描述数据存储单元用于描述数据存储单元(变量变量)地址地址NEAR、FAR 用于描述转移、调用的目的地址用于描述转移、调用的目的地址例例6):MOVBYTE PTRDI,0;字节类型字节类型 MOVWORD PTRDI,0;字类型字类型 MOVDI,0B5H ;类型不定类型不定PTR也可用来进行强制类型转换也可用来进行强制类型转换例:例:STR1 DW 1234H ;STR1定义为字类型定义为字类型 MOVAX,STR1 ;合法合法 MOVAL,STR1 ;非法非法 MOV AL,BYTE PT
15、R STR1;合法合法 分离运算符分离运算符LOW 取低字节取低字节 格式:格式:LOW HIGH 取高字节取高字节 格式:格式:HIGH 例:设例:设SSY=2050H MOV AL,LOW 3080H ;AL=80H MOV AH,HIGH SSY ;AH=20 MOV CL,LOW 3A4BH;CL=4BH 汇编运算符的优先级汇编运算符的优先级括号括号LENGTH、SIZEPTR、OFFSET、.HIGH、LOW*、/、MOD、SHL、SHR+、-EQ、NE、LT、LE、GT、GENOTANDOR、XOR1.符号定义伪指令(赋值语句)符号定义伪指令(赋值语句)(1)格式:格式:EQU 功
16、能:用符号来代表表达式的内容功能:用符号来代表表达式的内容 等价语句等价语句EQU表达式可以是常表达式可以是常数、数值表达式、数、数值表达式、字符串、存储器字符串、存储器符号等符号等例:例:COUNT EQU 100 ;符号;符号COUNT代表常数代表常数100 BUFF EQU 4*COUNT ;BUFF代表代表400 HELLO EQU “How are you!”;HELLO代表代表How are you VARW EQU THIS WORD ;变量;变量VARW的类型是字的类型是字 注意:等价语句的符号名注意:等价语句的符号名不能被重新赋值不能被重新赋值 等号语句等号语句=格式:格式:
17、=功能:用符号来代表表达式的数值功能:用符号来代表表达式的数值数值表达式数值表达式例:例:ABCD=100 YY =20+300/4 ABCD=2*ABCD+1可以重新赋值可以重新赋值例:例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST =BYTE PTRSI+BP GOTO =JMP MOV AX,TEN MOV CX,COUNT ADD DIST,FIVE DIST=WORD PTRSI+BP+1 ADD DIST,AX GOTO LABEL 先定义先定义后引用后引用 字节定义语句字节定义语句DB格式:格式:名字名字 DB 功能:表达式值或项表中的每一项是
18、一个功能:表达式值或项表中的每一项是一个字节字节数,数,它们从符号名地址开始按字节连续存放。它们从符号名地址开始按字节连续存放。例:例:COUNT DB 100 DB 0DH,0AH,VARW DB?,?,6,?,?,?,?低低0A2406 0D64COUNTVARW高高可以使用重复操作符可以使用重复操作符DUP如:如:BUFFER DB 8 DUP(0)符号地址符号地址DUP可以嵌套如:可以嵌套如:ARRAY DB 100 DUP(0,2 DUP(1,2),),3)字字定义语句定义语句DW格式:格式:名字名字 DW 功能:表达式值或项表中的每一项是一个功能:表达式值或项表中的每一项是一个字字
19、数,数,它们从符号名地址开始按它们从符号名地址开始按字字连续存放。连续存放。例:例:FLAG DW 2FCDH,24H DW?2400 2FCDFLAG低低高高汇编后对应的存储区域分配情况汇编后对应的存储区域分配情况 四字节定义语句四字节定义语句DD格式:格式:名字名字 DD 功能:表达式值或项表中的每一项是四个字节数,它们功能:表达式值或项表中的每一项是四个字节数,它们 从符号名地址开始按四字节从小地址连续存放。从符号名地址开始按四字节从小地址连续存放。格式:格式:名字名字 DQ 功能:表达式值或项表中的每一项是八个字节数,它们功能:表达式值或项表中的每一项是八个字节数,它们 从符号名地址开
20、始按八字节从小地址连续存放。从符号名地址开始按八字节从小地址连续存放。八字节定义语句八字节定义语句DQ 10字节定义指令字节定义指令DT例例1:DSEG1 SEGMENT DATA_B DB 10,5,10H DATA_W DW 100H,-4 DATA_D DD 0FFFBHDSEG1 ENDS汇编后的内存分配情况汇编后的内存分配情况如右图所示。如右图所示。05H10H00H01HFCHFFHFBHFFH00H00H0AHDSEG1:DATA_BDATA_BDATA_WDATA_WDATA_DDATA_D10105 510H10H100H100H-4 40FFFBH0FFFBH例例2 2:操
21、作数可以是字符串,例如:操作数可以是字符串,例如STR DBHELLO汇编后的情况如图:汇编后的情况如图:STRHELLO注意下面两个定义的不同之处:注意下面两个定义的不同之处:X DBAB;41H在低字节,在低字节,42H在高字节在高字节 Y DW AB ;42H在低字节,在低字节,41H在高字节在高字节48H45H4CH4CH4FH41H42H42H41HXY例例3:TABLE DB 10 DUP(?)BUFFER DW TABLE,$+3设设TABLE的偏移地址为的偏移地址为0080H,则汇编后如下图所则汇编后如下图所示:示:BUFFER0080H80HTABLE008AH008BH00
22、8CH008DH008EH.8FH00H00H0089H10 Bytes程序计数器程序计数器$程序计数器程序计数器$段定义的一般格式:段定义的一般格式:SEGMENT 定位方式定位方式连接方式连接方式类型名类型名 ENDS段开始语句段开始语句段结束语句段结束语句例:一个简单的数据段例:一个简单的数据段 DSEG SEGMENT BUFFER DB 8 DUP(0)DSEG ENDS开始的段名与结开始的段名与结束的段名必须相束的段名必须相同,段的长度不同,段的长度不能超过能超过64KB,SEGMENT后面后面的参数是可选的的参数是可选的注意:定位方式定位方式(定位类型)(定位类型)书书(P162
23、)定位类型指出了对当前段起始地址的要求,有定位类型指出了对当前段起始地址的要求,有4个选项个选项PAGE 指定起始地址的低指定起始地址的低8位是位是0,即其值能被,即其值能被256整除(称页边界)整除(称页边界)PARA 指定起始地址的低指定起始地址的低4为是为是0,即其值能被,即其值能被16整除(整除(称段边界称段边界)WORD指定起始地址的最低位是指定起始地址的最低位是0,即其值能被,即其值能被2整除(称为字边界)整除(称为字边界)BYTE 指定起始地址是任意值指定起始地址是任意值缺省定位缺省定位定位类型是用来确定程序段与程序段之间的衔接,如定位类型是用来确定程序段与程序段之间的衔接,如B
24、YTE 使得当前段紧接前一段,而使得当前段紧接前一段,而PAGE可能导致最大的段间隔可能导致最大的段间隔 连接方式连接方式(组合类型)(组合类型)连接方式告诉连接程序本段可按某种方式连接连接方式告诉连接程序本段可按某种方式连接PUBLIC告诉连接程序本段与其它同名同类别告诉连接程序本段与其它同名同类别 的段连接起来,公用一个起始点。的段连接起来,公用一个起始点。STACK 表示是堆栈段,连接方式同上。表示是堆栈段,连接方式同上。NONE 表示本段不与任何段连接。表示本段不与任何段连接。COMMON表示本段与同名同类别的段共用同一段地址,表示本段与同名同类别的段共用同一段地址,即同名同类段相重叠
25、。即同名同类段相重叠。MEMORY本段连接时定位在所有段之上,即高地址处。本段连接时定位在所有段之上,即高地址处。AT 表达式表达式表示本段定位在表达式值指定的段地址处。表示本段定位在表达式值指定的段地址处。隐含连接方式隐含连接方式一个源程序至少有一个堆栈段一个源程序至少有一个堆栈段例例:连接方式连接方式BmaxC(S)B(C)A(P)B(C)AC(S)A(P)B(C)AC2C1A1A2PCS模块模块1模块模块2模块模块1N 类别名类别名 类别名是由程序员指定的字符串,没有给出类别时,类别名是由程序员指定的字符串,没有给出类别时,这个段的类别就为空。这个段的类别就为空。例例1:某个源程序:某个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 第七
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内