汇编语言程序设计与上机指导第5章汇编语言语法课件

上传人:无*** 文档编号:241540436 上传时间:2024-07-03 格式:PPT 页数:51 大小:2.21MB
返回 下载 相关 举报
汇编语言程序设计与上机指导第5章汇编语言语法课件_第1页
第1页 / 共51页
汇编语言程序设计与上机指导第5章汇编语言语法课件_第2页
第2页 / 共51页
汇编语言程序设计与上机指导第5章汇编语言语法课件_第3页
第3页 / 共51页
点击查看更多>>
资源描述
2024/7/31重点大学计算机专业系列教材重点大学计算机专业系列教材重点大学计算机专业系列教材重点大学计算机专业系列教材第第5章章 汇编语言语法汇编语言语法【本章提要本章提要本章提要本章提要】本章以本章以本章以本章以IntelIntelIntelIntel系列微处理器的指令系统和宏汇编工具系列微处理器的指令系统和宏汇编工具系列微处理器的指令系统和宏汇编工具系列微处理器的指令系统和宏汇编工具MASM6.XMASM6.XMASM6.XMASM6.X为主体,介绍汇编语言的基本语法和伪指令,实现简单的汇为主体,介绍汇编语言的基本语法和伪指令,实现简单的汇为主体,介绍汇编语言的基本语法和伪指令,实现简单的汇为主体,介绍汇编语言的基本语法和伪指令,实现简单的汇编语言程序设计。编语言程序设计。编语言程序设计。编语言程序设计。【学习目标学习目标学习目标学习目标】熟练掌握进行汇编语言程序设计的基本语法熟练掌握进行汇编语言程序设计的基本语法熟练掌握进行汇编语言程序设计的基本语法熟练掌握进行汇编语言程序设计的基本语法 熟练掌握伪指令以及宏结构的应用熟练掌握伪指令以及宏结构的应用熟练掌握伪指令以及宏结构的应用熟练掌握伪指令以及宏结构的应用 熟练掌握利用熟练掌握利用熟练掌握利用熟练掌握利用MASM6.XMASM6.XMASM6.XMASM6.X工具对程序进行汇编的工具对程序进行汇编的工具对程序进行汇编的工具对程序进行汇编的具体方法具体方法具体方法具体方法汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回2oo指令指令指令指令:是可执行的,汇编后由相应的机器代码所取代是可执行的,汇编后由相应的机器代码所取代是可执行的,汇编后由相应的机器代码所取代是可执行的,汇编后由相应的机器代码所取代;oo伪指令伪指令伪指令伪指令:是不可执行的,只是在源程序汇编期间由汇编程序处理是不可执行的,只是在源程序汇编期间由汇编程序处理是不可执行的,只是在源程序汇编期间由汇编程序处理是不可执行的,只是在源程序汇编期间由汇编程序处理的命令,指示汇编程序为数据分配内存空间,或者提供段定义的命令,指示汇编程序为数据分配内存空间,或者提供段定义的命令,指示汇编程序为数据分配内存空间,或者提供段定义的命令,指示汇编程序为数据分配内存空间,或者提供段定义等信息,不产生任何机器代码等信息,不产生任何机器代码等信息,不产生任何机器代码等信息,不产生任何机器代码 源程序源程序可执行文件可执行文件目标模块目标模块文本编辑器文本编辑器汇编程序汇编程序连接程序连接程序调试程序调试程序机器语言机器语言:计算机能够直接识别与执行计算机能够直接识别与执行 高级语言高级语言:是完全独立于机器的通用语言,效率低:是完全独立于机器的通用语言,效率低,面向面向 过程、面向对象,必须译成机器语言。过程、面向对象,必须译成机器语言。汇编语言汇编语言:符号化语言。用指令的助记符、符号地址、标:符号化语言。用指令的助记符、符号地址、标 号等编写程序的语言号等编写程序的语言。5.1 概述概述2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回35.1.1 汇编语言程序的基本概念汇编语言程序的基本概念 指令与伪指令的集合构成汇编语言语句指令与伪指令的集合构成汇编语言语句指令与伪指令的集合构成汇编语言语句指令与伪指令的集合构成汇编语言语句.MODEL SMALL .MODEL SMALL ;定义内存工作模式为小模式定义内存工作模式为小模式定义内存工作模式为小模式定义内存工作模式为小模式 .386 ;.386 ;定义指令系统为定义指令系统为定义指令系统为定义指令系统为8038680386指令集指令集指令集指令集 .STACK .STACK ;定义定义定义定义1K1K个字节的堆栈段个字节的堆栈段个字节的堆栈段个字节的堆栈段 .DATA .DATA ;数据段开始数据段开始数据段开始数据段开始DATA1 DD 12340000H DATA1 DD 12340000H ;定义第一个定义第一个定义第一个定义第一个3232位数据的值为位数据的值为位数据的值为位数据的值为12340000H 12340000H DATA2 DD 5678H DATA2 DD 5678H ;定义第二个定义第二个定义第二个定义第二个3232位数据的值为位数据的值为位数据的值为位数据的值为5678H 5678H SUM DD SUM DD?;定义用来存放前两个数据之和的第三个数据定义用来存放前两个数据之和的第三个数据定义用来存放前两个数据之和的第三个数据定义用来存放前两个数据之和的第三个数据 .CODE ;.CODE ;代码段开始代码段开始代码段开始代码段开始,数据段结束数据段结束数据段结束数据段结束 .STARTUP .STARTUP ;程序开始程序开始程序开始程序开始 MOV EAX,DATA1 MOV EAX,DATA1 ;取第一个数到取第一个数到取第一个数到取第一个数到EAXEAX ADD EAX,DATA2 ADD EAX,DATA2 ;求和求和求和求和 MOV SUM,EAX MOV SUM,EAX ;保存结果保存结果保存结果保存结果(12345678H)(12345678H)至至至至SUMSUM .EXIT 0 .EXIT 0 ;程序结束程序结束程序结束程序结束,正常返回到操作系统正常返回到操作系统正常返回到操作系统正常返回到操作系统 END END ;结束汇编结束汇编结束汇编结束汇编2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回45.1.2 5.1.2 汇编语言的基本语法汇编语言的基本语法汇编语言的基本语法汇编语言的基本语法一、字符集一、字符集一、字符集一、字符集oo英文字符:英文字符:英文字符:英文字符:AAZ Z z zoo数字字符:数字字符:数字字符:数字字符:0 09 9oo算术运算符:算术运算符:算术运算符:算术运算符:/oo关系运算符:关系运算符:关系运算符:关系运算符:oo分隔符:分隔符:分隔符:分隔符:,(,(逗号逗号逗号逗号);();(分号分号分号分号)()()()(括号括号括号括号)()(引号引号引号引号)(空格(空格(空格(空格)TAB()TAB(制表制表制表制表符符符符)oo控制符:控制符:控制符:控制符:CRCR(回车)(回车)(回车)(回车)LFLF(换行)(换行)(换行)(换行)FFFF(换页)(换页)(换页)(换页)oo其它字符:其它字符:其它字符:其它字符:$&_$&_(下划线)(下划线)(下划线)(下划线)?%?%!二、标识符二、标识符二、标识符二、标识符1 1)标识符的第一个字符必须是字母、问号)标识符的第一个字符必须是字母、问号)标识符的第一个字符必须是字母、问号)标识符的第一个字符必须是字母、问号“?”?”、“”符、或下划线符、或下划线符、或下划线符、或下划线“_”;_”;2 2)从第二个字符开始可以是字母、数字、或)从第二个字符开始可以是字母、数字、或)从第二个字符开始可以是字母、数字、或)从第二个字符开始可以是字母、数字、或“?”?”、“”、“_”_”;3 3)一个标识符的长短可以由)一个标识符的长短可以由)一个标识符的长短可以由)一个标识符的长短可以由1 13131个字符组成。个字符组成。个字符组成。个字符组成。例如:例如:例如:例如:X,GAM_31X,GAM_31,?JACK5?JACK5是正确的;而是正确的;而是正确的;而是正确的;而8P,DATA 88P,DATA 8是不正确的。是不正确的。是不正确的。是不正确的。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回5三、保留字三、保留字pp寄存器名、指令助记符、伪操作命令、表达式运算寄存器名、指令助记符、伪操作命令、表达式运算寄存器名、指令助记符、伪操作命令、表达式运算寄存器名、指令助记符、伪操作命令、表达式运算符,以及属性操作符等都是系统专用的保留字。这符,以及属性操作符等都是系统专用的保留字。这符,以及属性操作符等都是系统专用的保留字。这符,以及属性操作符等都是系统专用的保留字。这些保留字是不能用作标识符的。些保留字是不能用作标识符的。些保留字是不能用作标识符的。些保留字是不能用作标识符的。四、语句四、语句oo一条语句一般只占一行,超过一行时必须用续行符一条语句一般只占一行,超过一行时必须用续行符一条语句一般只占一行,超过一行时必须用续行符一条语句一般只占一行,超过一行时必须用续行符号号号号“”指示指示指示指示oo两条语句不能写在同一行。两条语句不能写在同一行。两条语句不能写在同一行。两条语句不能写在同一行。oo语句可以有注释,一般写在语句之后或单独占一行,语句可以有注释,一般写在语句之后或单独占一行,语句可以有注释,一般写在语句之后或单独占一行,语句可以有注释,一般写在语句之后或单独占一行,是以是以是以是以“;”开始的字符串。开始的字符串。开始的字符串。开始的字符串。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回65.2 汇编语言的数据和表达式汇编语言的数据和表达式oo汇编语言能识别的数据是常量、变量和标号。汇编语言能识别的数据是常量、变量和标号。汇编语言能识别的数据是常量、变量和标号。汇编语言能识别的数据是常量、变量和标号。5.2.1 5.2.1 常量常量常量常量oo常量是汇编时已经确定的值,主要用于伪指令中给变量赋值,常量是汇编时已经确定的值,主要用于伪指令中给变量赋值,常量是汇编时已经确定的值,主要用于伪指令中给变量赋值,常量是汇编时已经确定的值,主要用于伪指令中给变量赋值,或作为指令语句中的立即数或存储器操作数的组成部分。或作为指令语句中的立即数或存储器操作数的组成部分。或作为指令语句中的立即数或存储器操作数的组成部分。或作为指令语句中的立即数或存储器操作数的组成部分。一常量的类型一常量的类型一常量的类型一常量的类型数据形式数据形式数据形式数据形式格格格格 式式式式 取取取取值值范范范范围围举举例例例例注注注注 释释二二二二进进制数制数制数制数B B0 01 110010011B10010011B二二二二进进制数以制数以制数以制数以B B结结尾尾尾尾八八八八进进制数制数制数制数QQ0 07 7123Q123Q八八八八进进制数以制数以制数以制数以QQ结结尾尾尾尾十十十十进进制数制数制数制数D D0 09 9256D256D,34583458十十十十进进制数以制数以制数以制数以D D结结尾或者缺省尾或者缺省尾或者缺省尾或者缺省十六十六十六十六进进制数制数制数制数HH0 09 9 A AF F0A3H0A3H,12345H12345H十六十六十六十六进进制数以制数以制数以制数以HH结结尾,尾,尾,尾,最前面必最前面必最前面必最前面必须须是是是是0 09 9字符或字符串字符或字符串字符或字符串字符或字符串 ASCIIASCII字符字符字符字符ABCABC两端必两端必两端必两端必须须加加加加 或或或或”2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回7二符号定义伪指令二符号定义伪指令二符号定义伪指令二符号定义伪指令 用于给程序中多次出现的同一个常量或表达式赋一个符号名,也可以为其它符号用于给程序中多次出现的同一个常量或表达式赋一个符号名,也可以为其它符号用于给程序中多次出现的同一个常量或表达式赋一个符号名,也可以为其它符号用于给程序中多次出现的同一个常量或表达式赋一个符号名,也可以为其它符号名取一个新名字,并赋给新的类型属性。名取一个新名字,并赋给新的类型属性。名取一个新名字,并赋给新的类型属性。名取一个新名字,并赋给新的类型属性。(1 1)EQUEQU伪指令伪指令伪指令伪指令例:例:例:例:FIRST EQU 1 FIRST EQU 1 ;定义常数;定义常数;定义常数;定义常数 SECOND EQU FIRST*3+8 SECOND EQU FIRST*3+8 ;定义数值表达式;定义数值表达式;定义数值表达式;定义数值表达式 ADDR1 EQU DS:ADDR1 EQU DS:EBP+4EBP+4 ;定义地址表达式;定义地址表达式;定义地址表达式;定义地址表达式 DWORDS EQU THIS DWORD DWORDS EQU THIS DWORD ;定义下面的字节变量为双字类型;定义下面的字节变量为双字类型;定义下面的字节变量为双字类型;定义下面的字节变量为双字类型 BYTES DB 10 DUP(0)BYTES DB 10 DUP(0)ADDR2 EQU WORD PTR BYTES ADDR2 EQU WORD PTR BYTES ;重新定义变量;重新定义变量;重新定义变量;重新定义变量BYTESBYTES的名字和属性的名字和属性的名字和属性的名字和属性 START:MOV EAXSTART:MOV EAX,EBXEBX GOON EQU FAR PTR START GOON EQU FAR PTR START ;重新定义标号;重新定义标号;重新定义标号;重新定义标号STARTSTART的名字和属性的名字和属性的名字和属性的名字和属性 COUNT EQU ECX COUNT EQU ECX ;为;为;为;为ECXECX重新取名重新取名重新取名重新取名注意:注意:注意:注意:该等值语句只作为符号定义用,不产生任何目标代码,也不占用存储单元,并该等值语句只作为符号定义用,不产生任何目标代码,也不占用存储单元,并该等值语句只作为符号定义用,不产生任何目标代码,也不占用存储单元,并该等值语句只作为符号定义用,不产生任何目标代码,也不占用存储单元,并且不能是程序中曾经定义过的符号名。且不能是程序中曾经定义过的符号名。且不能是程序中曾经定义过的符号名。且不能是程序中曾经定义过的符号名。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回8(2)“”伪指令伪指令“”伪操作命令与伪操作命令与伪操作命令与伪操作命令与EQUEQU具有相同的功能,但它定具有相同的功能,但它定具有相同的功能,但它定具有相同的功能,但它定义的符号义的符号义的符号义的符号允许重新定义允许重新定义允许重新定义允许重新定义。例:例:例:例:PERSON=10 PERSON=10 ;定义;定义;定义;定义PERSONPERSON等于等于等于等于1010 PERSON=PERSON+5 PERSON=PERSON+5 ;重新定义;重新定义;重新定义;重新定义PERSONPERSON等于等于等于等于15152024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回95.2.2 变量变量变量的值可以在程序运行过程中可随时修改,变量名是存放数据变量的值可以在程序运行过程中可随时修改,变量名是存放数据变量的值可以在程序运行过程中可随时修改,变量名是存放数据变量的值可以在程序运行过程中可随时修改,变量名是存放数据的存储单元符号地址,变量的值为对应存储单元的内容。的存储单元符号地址,变量的值为对应存储单元的内容。的存储单元符号地址,变量的值为对应存储单元的内容。的存储单元符号地址,变量的值为对应存储单元的内容。一变量的属性一变量的属性一变量的属性一变量的属性 段属性段属性段属性段属性(SEG)(SEG),指变量所在段的段基址。,指变量所在段的段基址。,指变量所在段的段基址。,指变量所在段的段基址。偏移地址属性偏移地址属性偏移地址属性偏移地址属性(OFFSET)(OFFSET),指变量所在段中的偏移地址,即变,指变量所在段中的偏移地址,即变,指变量所在段中的偏移地址,即变,指变量所在段中的偏移地址,即变量所在地址与段基址之间的字节距离。量所在地址与段基址之间的字节距离。量所在地址与段基址之间的字节距离。量所在地址与段基址之间的字节距离。类型属性类型属性类型属性类型属性(TYPE)(TYPE),指变量占用存储单元的字节数。,指变量占用存储单元的字节数。,指变量占用存储单元的字节数。,指变量占用存储单元的字节数。n若占用若占用一一个字节,称为字节变量,其类型为个字节,称为字节变量,其类型为BYTE;n若占用若占用两两个字节,称为字变量,其类型为个字节,称为字变量,其类型为WORD;n若占用若占用四四个字节,称为双字变量,其类型为个字节,称为双字变量,其类型为DWORD;n若占用若占用六六字节,其类型为字节,其类型为FWORD;n若占用若占用八八字节,其类型为字节,其类型为QWORD;n若占用若占用十十字节,其类型为字节,其类型为TBYTE。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回10二变量定义伪指令二变量定义伪指令二变量定义伪指令二变量定义伪指令就是为数据分配存储单元,且对这个存储单元取一个名字,即变量名。就是为数据分配存储单元,且对这个存储单元取一个名字,即变量名。就是为数据分配存储单元,且对这个存储单元取一个名字,即变量名。就是为数据分配存储单元,且对这个存储单元取一个名字,即变量名。语句的格式如下:语句的格式如下:语句的格式如下:语句的格式如下:变量名变量名变量名变量名 DB/DW/DD/DF/DQ/DT DB/DW/DD/DF/DQ/DT 表达式表达式表达式表达式1 1,表达式,表达式,表达式,表达式2 2,变量名是可选的,变量名是可选的,变量名是可选的,变量名是可选的,DB/DW/DD/DF/DQ/DTDB/DW/DD/DF/DQ/DT是伪操作命令必须选是伪操作命令必须选是伪操作命令必须选是伪操作命令必须选用一种,表达式是赋给变量的初值,常见的有如下几种:用一种,表达式是赋给变量的初值,常见的有如下几种:用一种,表达式是赋给变量的初值,常见的有如下几种:用一种,表达式是赋给变量的初值,常见的有如下几种:(1 1)数值变量定义语句)数值变量定义语句)数值变量定义语句)数值变量定义语句例:例:例:例:D_BYTE D_BYTE DBDB 30H,40H 30H,40H DB 50H DB 50HD_WORD D_WORD DW DW 1234H,5678H 1234H,5678HD_DWORD D_DWORD DDDD D_DWORD D_DWORDD_TBYTE D_TBYTE DTDT?D_FWORD D_FWORD DFDF 1234567890ABH 1234567890ABHD_QWORD D_QWORD DQDQ 1122334455667788H 1122334455667788H2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回11(2)字符串变量定义语句)字符串变量定义语句可以用可以用可以用可以用DBDB来实现来实现来实现来实现,即为串中的每一个字符分配一个字节存储单元。,即为串中的每一个字符分配一个字节存储单元。,即为串中的每一个字符分配一个字节存储单元。,即为串中的每一个字符分配一个字节存储单元。字符串必须用引号括起来,并且字符串必须用引号括起来,并且字符串必须用引号括起来,并且字符串必须用引号括起来,并且不超过不超过不超过不超过256256个字符,它们在内个字符,它们在内个字符,它们在内个字符,它们在内存中自左至右把字符的存中自左至右把字符的存中自左至右把字符的存中自左至右把字符的ASCIIASCII码按地址递增顺序依次存放。码按地址递增顺序依次存放。码按地址递增顺序依次存放。码按地址递增顺序依次存放。例:例:例:例:STRING1 DB ABCDEFGSTRING1 DB ABCDEFG用用用用DWDW也可以定义也可以定义也可以定义也可以定义字符串变量,即给两个字符组成的字符串分配两字符串变量,即给两个字符组成的字符串分配两字符串变量,即给两个字符组成的字符串分配两字符串变量,即给两个字符组成的字符串分配两个字节存储单元,它们在内存中的顺序是前一个字符为高字节,个字节存储单元,它们在内存中的顺序是前一个字符为高字节,个字节存储单元,它们在内存中的顺序是前一个字符为高字节,个字节存储单元,它们在内存中的顺序是前一个字符为高字节,存放在高地址,后一个字符为低字节,存放在低地址。存放在高地址,后一个字符为低字节,存放在低地址。存放在高地址,后一个字符为低字节,存放在低地址。存放在高地址,后一个字符为低字节,存放在低地址。例:例:例:例:STRING2 DW AB,CD,EFSTRING2 DW AB,CD,EF2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回12(3 3)?语句)?语句)?语句)?语句存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最终结果。终结果。终结果。终结果。例:例:例:例:FIRST DB?FIRST DB?;分配一个字节单元;分配一个字节单元;分配一个字节单元;分配一个字节单元 SECOND DD?,?,?SECOND DD?,?,?;分配三个双字单元;分配三个双字单元;分配三个双字单元;分配三个双字单元(4 4)带)带)带)带DUPDUP的变量定义语句的变量定义语句的变量定义语句的变量定义语句DUP DUP 是重复数据定义操作符,可以为若干重复数据分配存储单元,并赋给相是重复数据定义操作符,可以为若干重复数据分配存储单元,并赋给相是重复数据定义操作符,可以为若干重复数据分配存储单元,并赋给相是重复数据定义操作符,可以为若干重复数据分配存储单元,并赋给相应的变量名。应的变量名。应的变量名。应的变量名。例:例:例:例:D1 DB 5 DUP(0)D1 DB 5 DUP(0)D2 DW 10H DUP(5678H)D2 DW 10H DUP(5678H)D3 DD 20H DUP(?)D3 DD 20H DUP(?)oo第一条语句为变量第一条语句为变量第一条语句为变量第一条语句为变量D1D1分配分配分配分配5 5个字节单元个字节单元个字节单元个字节单元,每个单元初始值都为每个单元初始值都为每个单元初始值都为每个单元初始值都为0;0;oo第二条语句为变量第二条语句为变量第二条语句为变量第二条语句为变量D2D2重复分配重复分配重复分配重复分配10H10H个字单元,每个单元初始值都为个字单元,每个单元初始值都为个字单元,每个单元初始值都为个字单元,每个单元初始值都为5678H5678H,共占有,共占有,共占有,共占有20H20H个字节;个字节;个字节;个字节;oo第三条语句为变量第三条语句为变量第三条语句为变量第三条语句为变量D3D3保留保留保留保留20H20H个双字单元,没有定义初始值。个双字单元,没有定义初始值。个双字单元,没有定义初始值。个双字单元,没有定义初始值。D4 DB 200 DUP(4 DUP(6),8)D4 DB 200 DUP(4 DUP(6),8)oo表示为变量表示为变量表示为变量表示为变量D4D4重复分配重复分配重复分配重复分配200200个数据序列个数据序列个数据序列个数据序列66,6 6,6 6,6 6,88,共占有,共占有,共占有,共占有10001000个字节单元。个字节单元。个字节单元。个字节单元。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回13三内存定位和定义数制伪指令三内存定位和定义数制伪指令(1 1)ORGORG伪指令和当前位置计数器伪指令和当前位置计数器伪指令和当前位置计数器伪指令和当前位置计数器汇编时将段名填入段表,同时为该段配备一个初值为汇编时将段名填入段表,同时为该段配备一个初值为汇编时将段名填入段表,同时为该段配备一个初值为汇编时将段名填入段表,同时为该段配备一个初值为0 0的位置计数器的位置计数器的位置计数器的位置计数器$。计。计。计。计数器依次累计段内语句被汇编后生成的目标代码字节个数。可用数器依次累计段内语句被汇编后生成的目标代码字节个数。可用数器依次累计段内语句被汇编后生成的目标代码字节个数。可用数器依次累计段内语句被汇编后生成的目标代码字节个数。可用ORGORG伪指令把位置计数器伪指令把位置计数器伪指令把位置计数器伪指令把位置计数器的值设置成需要的值。的值设置成需要的值。的值设置成需要的值。的值设置成需要的值。oo在数据段中,在数据段中,在数据段中,在数据段中,ORGORG后面的数据定义伪指令就从指定位置进行分配单元;后面的数据定义伪指令就从指定位置进行分配单元;后面的数据定义伪指令就从指定位置进行分配单元;后面的数据定义伪指令就从指定位置进行分配单元;oo在代码段中,在代码段中,在代码段中,在代码段中,ORGORG后面的一条指令语句就从指定位置生成目标代码;后面的一条指令语句就从指定位置生成目标代码;后面的一条指令语句就从指定位置生成目标代码;后面的一条指令语句就从指定位置生成目标代码;oo表达式的值应该是非负的整数。表达式的值应该是非负的整数。表达式的值应该是非负的整数。表达式的值应该是非负的整数。例:例:例:例:ORG 0F0H ORG 0F0H ;从;从;从;从0F0H0F0H开始安排数据开始安排数据开始安排数据开始安排数据 ORG$+10H ORG$+10H ;跳过;跳过;跳过;跳过10H10H个字节后安排数据个字节后安排数据个字节后安排数据个字节后安排数据 DW 1,$+4,$+4DW 1,$+4,$+4 ;100H100H单元的字值为单元的字值为单元的字值为单元的字值为1,102H1,102H单元的字值单元的字值单元的字值单元的字值 ;为;为;为;为106H,104H106H,104H单元的字值为单元的字值为单元的字值为单元的字值为108H108H ARRAY DB 12,34,56,5 DUP(?)ARRAY DB 12,34,56,5 DUP(?);定义字节数组;定义字节数组;定义字节数组;定义字节数组LEN EQU LEN EQU$-ARRAY$-ARRAY ;LENLEN的值为的值为的值为的值为ARRAYARRAY变量所占的字节数变量所占的字节数变量所占的字节数变量所占的字节数8 82024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回14(2 2)EVENEVEN伪指令伪指令伪指令伪指令 用来把段内位置计数器的值置为偶数地址边界对齐,如果遇到用来把段内位置计数器的值置为偶数地址边界对齐,如果遇到用来把段内位置计数器的值置为偶数地址边界对齐,如果遇到用来把段内位置计数器的值置为偶数地址边界对齐,如果遇到EVENEVEN时时时时计数器计数器计数器计数器$值非偶数,则汇编程序自动插入值非偶数,则汇编程序自动插入值非偶数,则汇编程序自动插入值非偶数,则汇编程序自动插入NOPNOP指令指令指令指令(在代码段中在代码段中在代码段中在代码段中),使其为偶数;或者将使其为偶数;或者将使其为偶数;或者将使其为偶数;或者将$的值加的值加的值加的值加1(1(数据段中数据段中数据段中数据段中)。(3 3).RADIX.RADIX伪指令伪指令伪指令伪指令 宏汇编默认常量基数都是十进制数,可用宏汇编默认常量基数都是十进制数,可用宏汇编默认常量基数都是十进制数,可用宏汇编默认常量基数都是十进制数,可用.RADIX.RADIX伪命令把缺省基伪命令把缺省基伪命令把缺省基伪命令把缺省基数改为数改为数改为数改为216216范围内的任意基数:范围内的任意基数:范围内的任意基数:范围内的任意基数:.RADIX.RADIX 其中,表达式与当前基数无关,其中,表达式与当前基数无关,其中,表达式与当前基数无关,其中,表达式与当前基数无关,一定是十进制数一定是十进制数一定是十进制数一定是十进制数。例:例:例:例:MOV AX,0FFHMOV AX,0FFH MOV BX MOV BX,2020 .RADIX 16 .RADIX 16 MOV CX,0FF MOV CX,0FF MOV DX,20D MOV DX,20D其中其中其中其中AXAX和和和和CXCX寄存器的内容相同,寄存器的内容相同,寄存器的内容相同,寄存器的内容相同,BXBX和和和和DXDX寄存器内容相同。寄存器内容相同。寄存器内容相同。寄存器内容相同。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回155.2.3 标号标号标号之后必须有一个冒号标号之后必须有一个冒号标号之后必须有一个冒号标号之后必须有一个冒号(:)(:),标号也可以单占一行。,标号也可以单占一行。,标号也可以单占一行。,标号也可以单占一行。一标号的属性一标号的属性一标号的属性一标号的属性 段属性段属性段属性段属性(SEG)(SEG),指标号所在段的段基址。,指标号所在段的段基址。,指标号所在段的段基址。,指标号所在段的段基址。偏移地址属性偏移地址属性偏移地址属性偏移地址属性(OFFSET)(OFFSET),指标号所在段中的偏移地址,即标号所在地址与段基址之间的,指标号所在段中的偏移地址,即标号所在地址与段基址之间的,指标号所在段中的偏移地址,即标号所在地址与段基址之间的,指标号所在段中的偏移地址,即标号所在地址与段基址之间的字节距离。字节距离。字节距离。字节距离。距离属性或类型属性距离属性或类型属性距离属性或类型属性距离属性或类型属性(TYPE)(TYPE),标号可作为转移和调用指令的目标地址,也可作为过程定义,标号可作为转移和调用指令的目标地址,也可作为过程定义,标号可作为转移和调用指令的目标地址,也可作为过程定义,标号可作为转移和调用指令的目标地址,也可作为过程定义伪指令的过程名。伪指令的过程名。伪指令的过程名。伪指令的过程名。n当标号只允许作为段内转移或调用指令的目标地址时,距离属性为当标号只允许作为段内转移或调用指令的目标地址时,距离属性为NEAR;n当标号作为段间转移或调用指令的目标地址时,距离属性为当标号作为段间转移或调用指令的目标地址时,距离属性为FAR。例如:例如:例如:例如:JMP LABEL1 JMP LABEL1 ;程序跳转到标号;程序跳转到标号;程序跳转到标号;程序跳转到标号LABEL1LABEL1的位置的位置的位置的位置CALL FAR PTR SUBPROGRAM CALL FAR PTR SUBPROGRAM ;调用;调用;调用;调用SUBPROGRAMSUBPROGRAM过程(过程(过程(过程(FARFAR)LABEL1:LABEL1:;LABEL1LABEL1为段内转移标号为段内转移标号为段内转移标号为段内转移标号(距离属性缺省为距离属性缺省为距离属性缺省为距离属性缺省为NEAR)NEAR)LABEL2:LABEL2:;LABEL2LABEL2为段内转移标号,单独占一行为段内转移标号,单独占一行为段内转移标号,单独占一行为段内转移标号,单独占一行 SUBPROGRAM PROC FAR SUBPROGRAM PROC FAR ;SUBPROGRAMSUBPROGRAM是属性为是属性为是属性为是属性为FARFAR的过程的过程的过程的过程 RETRET 标号的距离属性可用标号的距离属性可用标号的距离属性可用标号的距离属性可用LABELLABEL伪指令加以改变。伪指令加以改变。伪指令加以改变。伪指令加以改变。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回16二二二二LABELLABEL伪指令伪指令伪指令伪指令(1 1)与变量连用)与变量连用)与变量连用)与变量连用用来给相连的变量取一个新的名字,并指定新的类型属性。用来给相连的变量取一个新的名字,并指定新的类型属性。用来给相连的变量取一个新的名字,并指定新的类型属性。用来给相连的变量取一个新的名字,并指定新的类型属性。例:例:例:例:B_VAR1 B_VAR1 LABEL BYTELABEL BYTE W_VAR1 DW 3456H W_VAR1 DW 3456H W_VAR2 W_VAR2 LABEL WORDLABEL WORD D_VAR2 DD 87654321H D_VAR2 DD 87654321H给字变量给字变量给字变量给字变量W_VAR1W_VAR1一个新名字一个新名字一个新名字一个新名字B_VAR1B_VAR1,类型属性,类型属性,类型属性,类型属性BYTEBYTE。如果以字类型访问该变。如果以字类型访问该变。如果以字类型访问该变。如果以字类型访问该变量,应使用变量名量,应使用变量名量,应使用变量名量,应使用变量名W_VAR1W_VAR1;而以字节类型访问该变量时,应使用;而以字节类型访问该变量时,应使用;而以字节类型访问该变量时,应使用;而以字节类型访问该变量时,应使用B_VAR1B_VAR1。如果想按字访问如果想按字访问如果想按字访问如果想按字访问D_VAR2D_VAR2变量,则可以用变量,则可以用变量,则可以用变量,则可以用W_VAR2W_VAR2。注意:注意:注意:注意:B_VAR1B_VAR1和和和和W_VAR2W_VAR2都是给变量增加类型属性,并不另外占用存储单元都是给变量增加类型属性,并不另外占用存储单元都是给变量增加类型属性,并不另外占用存储单元都是给变量增加类型属性,并不另外占用存储单元(2 2)与标号连用)与标号连用)与标号连用)与标号连用用来给相连的指令地址用来给相连的指令地址用来给相连的指令地址用来给相连的指令地址(即标号即标号即标号即标号)定义一个新的标号,并指定新的距离属性。定义一个新的标号,并指定新的距离属性。定义一个新的标号,并指定新的距离属性。定义一个新的标号,并指定新的距离属性。例:例:例:例:DISTFAR DISTFAR LABEL FARLABEL FAR DISTNEAR:MOV EAX,EBX DISTNEAR:MOV EAX,EBX给近标号给近标号给近标号给近标号DISTNEARDISTNEAR取一个新的标号名取一个新的标号名取一个新的标号名取一个新的标号名DISTFARDISTFAR,距离属性修改为,距离属性修改为,距离属性修改为,距离属性修改为FARFAR。当其它。当其它。当其它。当其它代码段中的转移或调用指令引用时,可使用标号代码段中的转移或调用指令引用时,可使用标号代码段中的转移或调用指令引用时,可使用标号代码段中的转移或调用指令引用时,可使用标号DISTFARDISTFAR,而在本段引用时,而在本段引用时,而在本段引用时,而在本段引用时,只要使用标号只要使用标号只要使用标号只要使用标号DISTNEARDISTNEAR即可,但它们实际上是指向同一条指令。用即可,但它们实际上是指向同一条指令。用即可,但它们实际上是指向同一条指令。用即可,但它们实际上是指向同一条指令。用LABELLABEL伪伪伪伪指令的定义,实现了按不同的标号名和不同的转移方式而转移到同一个标号的目指令的定义,实现了按不同的标号名和不同的转移方式而转移到同一个标号的目指令的定义,实现了按不同的标号名和不同的转移方式而转移到同一个标号的目指令的定义,实现了按不同的标号名和不同的转移方式而转移到同一个标号的目的。的。的。的。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回175.2.4 表达式和运算符表达式和运算符一、算术运算符一、算术运算符一、算术运算符一、算术运算符oo包括包括包括包括+、-、*、/、MODMOD、SHLSHL和和和和SHRSHR共七种;共七种;共七种;共七种;oo+、-、*、/参加运算的数和运算结果均为参加运算的数和运算结果均为参加运算的数和运算结果均为参加运算的数和运算结果均为整数整数整数整数;oo除法运算为整除,而模除的运算结果为除法运算为整除,而模除的运算结果为除法运算为整除,而模除的运算结果为除法运算为整除,而模除的运算结果为余数余数余数余数;oo左移或右移运算符可使二进制数左移或右移若干位,相当于二进左移或右移运算符可使二进制数左移或右移若干位,相当于二进左移或右移运算符可使二进制数左移或右移若干位,相当于二进左移或右移运算符可使二进制数左移或右移若干位,相当于二进制数进行乘法或除法运算。制数进行乘法或除法运算。制数进行乘法或除法运算。制数进行乘法或除法运算。例:例:例:例:TEMP=10+5 TEMP=10+5 ;TEMP=15TEMP=15 TEMP=TEMP-3 TEMP=TEMP-3 ;TEMP=12TEMP=12 TEMP=TEMP=TEMPTEMP*5 *5 ;TEMP=60TEMP=60 TEMP=TEMP/9 TEMP=TEMP/9 ;TEMP=6TEMP=6 TEMP=TEMP=TEMPTEMP MOD 4 MOD 4 ;TEMP=2TEMP=2 TEMP=-TEMP TEMP=-TEMP ;TEMP=-2TEMP=-2 MOV AL,11B SHL 5 MOV AL,11B SHL 5 ;(AL)=01100000B(AL)=01100000B注意注意注意注意:除了加和减运算符可以使用变量或标号外,其它算术运算符只除了加和减运算符可以使用变量或标号外,其它算术运算符只除了加和减运算符可以使用变量或标号外,其它算术运算符只除了加和减运算符可以使用变量或标号外,其它算术运算符只适用于适用于适用于适用于常量常量常量常量的数值运算。的数值运算。的数值运算。的数值运算。2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回18二、逻辑运算符二、逻辑运算符二、逻辑运算符二、逻辑运算符有有有有ANDAND、OROR、XORXOR、NOTNOT共四种;共四种;共四种;共四种;oo只适用于只适用于只适用于只适用于对常量对常量对常量对常量进行逻辑运算,运算是按位进行的;进行逻辑运算,运算是按位进行的;进行逻辑运算,运算是按位进行的;进行逻辑运算,运算是按位进行的;oo运算符与逻辑运算指令助记符相同,但在语句中的位置不一样,表运算符与逻辑运算指令助记符相同,但在语句中的位置不一样,表运算符与逻辑运算指令助记符相同,但在语句中的位置不一样,表运算符与逻辑运算指令助记符相同,但在语句中的位置不一样,表达式中的达式中的达式中的达式中的逻辑运算符是在汇编时完成运算的逻辑运算符是在汇编时完成运算的逻辑运算符是在汇编时完成运算的逻辑运算符是在汇编时完成运算的;而;而;而;而逻辑运算指令运算逻辑运算指令运算逻辑运算指令运算逻辑运算指令运算在执行指令时进行在执行指令时进行在执行指令时进行在执行指令时进行。例:例:例:例:MOV AL,MOV AL,NOTNOT 10100101B 10100101B ;(AL)=01011010B(AL)=01011010B MOV AL,11011011B MOV AL,11011011B ANDAND 00001111B 00001111B ;(AL)=00001011B(AL)=00001011B MOV AL,11100001B MOV AL,11100001B OROR 10000101B 10000101B ;(AL)=11100101B(AL)=11100101B MOV AL,10111011B MOV AL,10111011B XORXOR 00100100B 00100100B ;(AL)=10011111B(AL)=10011111B2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回19三、关系运算符三、关系运算符 包括包括包括包括EQEQ、NENE、LTLT、GTGT、LELE、GEGE共六种;共六种;共六种;共六种;oo可对可对可对可对常量或同一段内的存储器地址常量或同一段内的存储器地址常量或同一段内的存储器地址常量或同一段内的存储器地址进行比较运算;进行比较运算;进行比较运算;进行比较运算;oo若条件满足,运算结果为真,输出结果为若条件满足,运算结果为真,输出结果为若条件满足,运算结果为真,输出结果为若条件满足,运算结果为真,输出结果为全全全全“1”1”;oo若不满足条件,运算结果为假,输出结果为若不满足条件,运算结果为假,输出结果为若不满足条件,运算结果为假,输出结果为若不满足条件,运算结果为假,输出结果为全全全全“0”0”。例:例:例:例:MOV BX,10 MOV BX,10 EQEQ 1010B 1010B ;1010等于等于等于等于1010B1010B为真,为真,为真,为真,(BX)=0FFFFH(BX)=0FFFFH MOV DX,20H MOV DX,20H GTGT 32 32 ;20H20H大于大于大于大于3232为假,为假,为假,为假,(DX)=0(DX)=02024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回20四、数值返回运算符四、数值返回运算符四、数值返回运算符四、数值返回运算符运算对象必须是存储器操作数,即运算对象必须是存储器操作数,即运算对象必须是存储器操作数,即运算对象必须是存储器操作数,即变量或标号变量或标号变量或标号变量或标号。(1 1)SEGSEG运算符运算符运算符运算符:返回该变量或标号所在段的段基址。:返回该变量或标号所在段的段基址。:返回该变量或标号所在段的段基址。:返回该变量或标号所在段的段基址。例如:例如:例如:例如:MOV AX,MOV AX,SEG VARSEG VAR 如果变量如果变量如果变量如果变量VARVAR所在段的段基址为所在段的段基址为所在段的段基址为所在段的段基址为1000H1000H,则该指令执行的结果,则该指令执行的结果,则该指令执行的结果,则该指令执行的结果 等效于等效于等效于等效于 MOV AX,1000HMOV AX,1000H(2 2)OFFSETOFFSET运算符运算符运算符运算符:返回该变量或标号所在段内的偏移地址。:返回该变量或标号所在段内的偏移地址。:返回该变量或标号所在段内的偏移地址。:返回该变量或标号所在段内的偏移地址。例如:例如:例如:例如:MOV DI,MOV DI,OFFSET VAROFFSET VAR 如果变量如果变量如果变量如果变量VARVAR在在在在1000H1000H段内的偏移地址是段内的偏移地址是段内的偏移地址是段内的偏移地址是100H100H,则该指令执行,则该指令执行,则该指令执行,则该指令执行 的结果等效于:的结果等效于:的结果等效于:的结果等效于:MOV DI,100HMOV DI,100H(3 3)TYPETYPE运算符运算符运算符运算符:返回该变量的类型属性或者标号的距离属性。:返回该变量的类型属性或者标号的距离属性。:返回该变量的类型属性或者标号的距离属性。:返回该变量的类型属性或者标号的距离属性。例:例:例:例:V1 DB 1,2,3V1 DB 1,2,3V2 DW 1020H,3040HV3 DD 12345678HPF LABEL FARPN:MOV AH,TYPE V1 ;等效于;等效于MOV AH,1 MOV AL,TYPE V2 ;等效于;等效于MOV AL,2 MOV DL,TYPE V3 ;等效于;等效于MOV BL,4 MOV DH,TYPE PF ;等效于;等效于MOV BH,-22024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回21属性与返回数值的关系属性与返回数值的关系 变变量量/标标号属性号属性返回数返回数值值 字字节变节变量量BYTEBYTE字字变变量量WORDWORD双字双字变变量量DWORDDWORD三字三字变变量量FWORDFWORD四字四字变变量量QWORDQWORD十字十字节变节变量量TBYTETBYTE1 12 24 46 68 81010标标号号NEARNEAR标标号号FARFAR1FFH1FFH2FEH2FEH2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回224LENGTHOF运算符运算符 该运算符加在变量名之前,返回的数值是变量中所定义的元素个数。该运算符加在变量名之前,返回的数值是变量中所定义的元素个数。该运算符加在变量名之前,返回的数值是变量中所定义的元素个数。该运算符加在变量名之前,返回的数值是变量中所定义的元素个数。D1 DW 10H DUP D1 DW 10H DUP(0 0),),),),1234H1234H D2 DB 20H DUP D2 DB 20H DUP(2 DUP2 DUP(0 0),),),),1 1)D3 DQ 1234H,5678H D3 DQ 1234H,5678H D4 DB ABCDEFGH D4 DB ABCDEFGH D5 DD 12HD5 DD 12H,34H34H,;加一个续行符,表示一条伪指令占两行;加一个续行符,表示一条伪指令占两行;加一个续行符,表示一条伪指令占两行;加一个续行符,表示一条伪指令占两行 56H56H,78H78H D6 DD 12H D6 DD 12H,34H 34H ;未加续行符,则表示这两行是两条伪指令;未加续行符,则表示这两行是两条伪指令;未加续行符,则表示这两行是两条伪指令;未加续行符,则表示这两行是两条伪指令 DD 56HDD 56H,78H78H MOV AL MOV AL,LENGTHOFLENGTHOF D1 D1 ;(;(;(;(ALAL)=11H=11H MOV AL MOV AL,LENGTHOF D2 LENGTHOF D2 ;(;(;(;(ALAL)=60H=60H MOV AL MOV AL,LENGTHOF D3 LENGTHOF D3 ;(;(;(;(ALAL)=2H=2H MOV AL MOV AL,LENGTHOF D4 LENGTHOF D4 ;(;(;(;(ALAL)=8H=8H MOV AL MOV AL,LENGTHOF D5 LENGTHOF D5 ;(;(;(;(ALAL)=4H=4H MOV AL MOV AL,LENGTHOF D6 LENGTHOF D6 ;(;(;(;(ALAL)=2H=2H2024/7/3汇汇编编语语言言程程序序设设计计及及上上机机指指导导第第5章章返回返回235SIZEOF运算符运算符该运算符加在变量名之前,返回的数值是变量所占的总字节数,且等于该运算符加在变量名之前,返回的数值是变量所占的总字节数,且等于该运算符加在变量名之前,返回的数值是变量所占的总字节数,且等于该运算符加在变量名之前,返回的数值是变量所占的总字节数,且等于LENGTHOFLENGTHOF和和和和TYPETYPE两个运算符返回值的乘积两个运算符返回值的乘积两个运算符返回值的乘积两个运算符返回值的乘积。例如,对于上例中的。例如,对于上例中的。例如,对于上例中的。例如,对于上例中的变量,变量,变量,变量,SIZEOFSIZEOF的返回值如下所示:的返回值如下所示:的返回值如下所示:的返回值如下所示:MOV ALMOV AL,SIZEOFSIZEOF D1 D1 ;(;(;(;(ALAL)=22H=22H,即,即,即,即20H*2H20H*2HMOV ALMOV AL,SIZEOF D2 SIZEOF D2 ;(;(;(;(ALAL)=60H=60H,即,即,即,即60H*1H60H*1HMOV ALMOV AL,SIZEOF D3 SIZEOF D3 ;(;(;(;(ALAL)=10H=10H,即,即,即,即8H*2H8H*2HMOV ALMOV AL,SIZEOF D4 SIZEOF D4 ;(;(;(;(ALAL)=8H=8H,即,即,即,即8H*1H8H*1HMOV ALMOV AL,SIZEOF D5 SIZEOF D5 ;(;(;(;(ALAL)=10H=10H,即,即,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!