汇编语言课件07MASM语法_第1页
汇编语言课件07MASM语法_第2页
汇编语言课件07MASM语法_第3页
汇编语言课件07MASM语法_第4页
汇编语言课件07MASM语法_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言课件07MASM语法(1)汇编语言语句一般格式为: 语句标号: 指令名 操作数序列 ;注释 标识符: 用来为变量、段、标号、过程等命名命名规则: 最长31个字符第一个字符不能是数字? - $可出现在任意位置,但? $不能单独使用汇编语言语句格式与分类 语句标号: 指令名 操作数序列 ;注释 语句标号标识符后加 : ,提供转移地址,开始地址 语句标号: 指令名 操作数序列 ;注释 三类:机器指令、伪指令和宏指令。 机器指令:指令系统中的硬指令,程序运行时由CPU执行伪指令:汇编程序执行的操作,规定汇编程序如何按要求进行汇编及分配内存宏指令:由一系列指令或伪指令构成,汇编时展开成若干条机器

2、指令,用于提高编程效率(伪指令和宏指令由汇编程序在汇编期间处理 ) 语句标号: 指令名 操作数序列 ;注释 可以是常量、变量、表达式、寄存器名或标号等,用逗号隔开。“;”后可给出语句注释,提高可读性和可理解性。 语句标号: 指令名 操作数序列 ;注释 常量、变量、标号、运算符和表达式常量表示一个固定的数值,又可分成多种形式。1. 常数这里指由10,16,2和8进制形式表达的数值各种进制的数据以后缀字母区分,默认不加后缀字母的是十进制数基数控制. RADIX伪指令可以改变默认进制:.RADIX n .RADIX 10 .model small .stack 1024 .data string d

3、b Hello, world ,0dh,0ah ,$ .code start: mov ax,data mov ds,ax mov dx,offset string mov ah,9 int 21h mov ah,4ch int 21h end start 常量其中,n为2-16范围内任何数值。例如指令“ .RADIX 16”,将缺省基数改为 16,即没有后缀的数值表示16进制数,非16进制数均应使用后缀字母,包括10进制数例如10101100B0a4h,56acH35D357Q实数:整数.小数E指数4字节、8字节或10字节例如: 21.42 -4.55E+2字符串字符串常量是用单引号或双引号

4、括起来的单个字符或多个字符,其数值是每个字符对应的ASCII码值。例如d64HAB4142H,Hello, Assembly !符号常量符号常量是指使用标识符表达一个数值。常量若使用有意义的符号名来表示,就可以提高程序的可读性,同时更具有通用性。 MASM提供等价机制,用来为常量定义符号名,符号定义伪指令有“等价EQU”和“等号”伪指令。符号定义伪指令符号名 EQU 数值表达式符号名 EQU ;MASM 5.x不支持符号名 数值表达式等价伪指令EQU给符号名定义一个数值或定义成另一个字符串,这个字符串甚至可以是一条处理器指令。例如:DosWriteChar equ 2CarriageRetur

5、n = 13CallDOS equ 应用上述符号定义,下列左边的程序段可以写成右侧的等价形式:mov ah,DosWriteChar ;mov ah,2mov dl,CarriageReturn;mov dl,13CallDOS ;int 21hEQU用于数值等价时不能重复定义符号名,但“”允许重复赋值,例如:X = 7 ;同样 X EQU 7 是正确的X = X+5 ;但是 X EQU X+5 是错误的数值表达式数值表达式一般是指由运算符(MASM统称为操作符Operator)连接的各种常量所构成的表达式。汇编程序在汇编过程中计算表达式,最终得到一个确定的数值,所以也是常量。由于表达式是在程

6、序运行前的汇编阶段计算,所以组成表达式的各部分必须在汇编时就能确定。汇编语言支持多种运算符P46 表3-2mov ax,3*4+5 ;等价于 mov ax,17or al,03h AND 45h;等价于 or al,01Hmov al,0101b SHL (2*2);等价于 mov al,01010000b变量变量实质上是指内存单元的数据,因而可以改变。变量需要事先定义才能使用。变量的三种属性: 段值(SEG):变量所在段的段址 偏移量(OFFSET):变量所在段相对0的存储位置(字节数) 类型(TYPE):变量占用的字节数1. 变量的定义变量名 伪指令 初值表变量名为用户自定义标识符,表示初

7、值表首元素的逻辑地址。变量名也可以没有,在这种情况下,汇编程序将直接为初值表分配空间,无符号地址。变量名 伪指令 初值表变量定义伪指令有DB,DW,DD,DF,DQ,DT,它们根据申请的主存空间单位分类DB:字节DW:字(16位)DD:双字(32位)DQ:4字节 存实型数DT:10字节,BCD码 除了 DB,DW ,DD等定义的简单变量,汇编语言还支持复杂的数据变量,如结构(Structure)、记录(Record)、联合(Union)等变量名 伪指令 初值表初值表是用逗号分隔的参数,主要由常量、数值表达式或“?”组成。其中“?”表示初值不确定,即未赋初值。另外,多个存储单元如果初值相同,可以

8、用复制操作符 DUP进行定义。DUP的格式为:重复次数 DUP (重复参数)例:stack1 db 100 dup(?)2. 变量的应用变量具有逻辑地址。在程序代码中,通过变量名引用其指向的第一个数据,通过变量名加减位移量存取以第一个数据为基地址的前后数据。变量名后用“n”或“n ”作用相同,都表示后移n个字节存储单元。例 变量的定义和应用bvar1db 100,01100100b,64h,d;字节变量:不同进制表达同一个数值,内存中有4个64Hminint= 5;符号常量:minint数值为5,不占内存空间bvar2 db -1,minint,minint+5;内存中数值依次为0FFH ,

9、5 , 0AH db ?,2 dup(20h);预留一个字节空间,重复定义了2个数值20Hwvar1 dw 2010h,4*4;字变量:两个数据是2010H、10H,共占4个字节64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1wvar2dw ?;wvar2是没有初值的字变量dvar dd 12347777h,87651111h;双字变量:2个双字数据abc db a,b,c,?等效于abc db abc,?;定义字符,实际是字节变量77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00habc+

10、2?stringdb ABCDEFGHIJ;定义字符串:使用字节定义DB伪指令crlfs db 13,10,$;回车符0D H、换行符0AH和字符$24Hmaxint equ 0aharray1 dw maxint dup(0); 10个初值为0的字量,可以认为是数组array db 2 dup(2,3,2 dup(4); 8个字节内容依次为:2 3 4 4 2 3 4 4stringABCDEFJIGH$131000h23442344crlfsarray1array共20字节mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1

11、的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1mov d

12、l,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64

13、H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节

14、数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcd64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcddDL:77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00hmov dl,bvar1;

15、bvar1表示它的第1个数据,故DL100ddec bvar2+1; bvar2位移量为1的字节数据(minint5)减1,故为4mov abc3,dl; abc位移量为3的字节单元赋值d,字符串成为 abcddDL:77h77h12H34Hwvar211h11h65hdvarba87hdcabc?00hmov ax,word ptr dvar0mov dx,word ptr dvar2 ;取双字到DX.AX77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00h其它几个可用于变量的运算符SEG:取变量、标号段地址TYPE:返回此变量类型存储的所需字节数。(对标号为-1,-2)LENGTH:取数组元素个数SIZE:取数组字节数设:DS=2000HXP DW ?X1 DB A,B,CARRAY DW 100 DUP(1,2,3, 20(0)MOV AL,TYPE XP; 等效于MOV AL,2MOV AL,TYPE X1 ;等效于MOV AL,1MOV AL,LENGTH X1;等效于MOV AL,1MOV AL,LENGTH ARRAY;等效于MOV AL,100MOV AX,SIZE ARRAY;等效于MOV AX,200(有嵌套,不对)MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论