《汇编语言编程》PPT电子课件教案-07 MASM语法(1)

上传人:jiups****uk12 文档编号:54952589 上传时间:2018-09-22 格式:PPT 页数:38 大小:136KB
返回 下载 相关 举报
《汇编语言编程》PPT电子课件教案-07 MASM语法(1)_第1页
第1页 / 共38页
《汇编语言编程》PPT电子课件教案-07 MASM语法(1)_第2页
第2页 / 共38页
《汇编语言编程》PPT电子课件教案-07 MASM语法(1)_第3页
第3页 / 共38页
《汇编语言编程》PPT电子课件教案-07 MASM语法(1)_第4页
第4页 / 共38页
《汇编语言编程》PPT电子课件教案-07 MASM语法(1)_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《《汇编语言编程》PPT电子课件教案-07 MASM语法(1)》由会员分享,可在线阅读,更多相关《《汇编语言编程》PPT电子课件教案-07 MASM语法(1)(38页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

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

6、序在汇编过程中计算表达式,最终得到一个确定的数值,所以也是常量。 由于表达式是在程序运行前的汇编阶段计算,所以组成表达式的各部分必须在汇编时就能确定。,汇编语言支持多种运算符 P46 表3-2,mov 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的存储位置(字节数)类型(TYP

7、E):变量占用的字节数,1. 变量的定义 变量名 伪指令 初值表 变量名为用户自定义标识符,表示初值表首元素的逻辑地址。变量名也可以没有,在这种情况下,汇编程序将直接为初值表分配空间,无符号地址。,变量名 伪指令 初值表 变量定义伪指令有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个字节存储单元。,例 变量的定义和应用,bvar1 db 100,01100100b,64h,d ;字节变量:不同进制表达同一个数值,内存中有4个64H minint=

9、 5 ;符号常量:minint数值为5,不占内存空间 bvar2 db -1,minint,minint+5 ;内存中数值依次为0FFH , 5 , 0AHdb ?,2 dup(20h) ;预留一个字节空间,重复定义了2个数值20H wvar1 dw 2010h,4*4 ;字变量:两个数据是2010H、10H,共占4个字节,wvar2 dw ? ;wvar2是没有初值的字变量 dvar dd 12347777h,87651111h ;双字变量:2个双字数据 abc db a,b,c,? 等效于abc db abc,? ;定义字符,实际是字节变量,abc+2?,string db ABCDEFG

10、HIJ ;定义字符串:使用字节定义DB伪指令 crlfs db 13,10,$ ;回车符0D H、换行符0AH和字符$24H maxint equ 0ah array1 dw maxint dup(0) ; 10个初值为0的字量,可以认为是数组 array db 2 dup(2,3,2 dup(4) ; 8个字节内容依次为:2 3 4 4 2 3 4 4,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 a

11、bcd,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,d,DL:,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d de

12、c bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,d,DL:,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,d,DL:,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1

13、,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,d,DL:,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 abcd,mov dl,bvar1 ; bvar1表示它的第1个数据,故DL100d dec bvar2+1 ; bvar2位移量为1的字节数据(minint5)减1,故为4 mov abc3,dl ; abc位移量为3的字节单元赋值d,字符串成为 ab

14、cd,mov ax,word ptr dvar0 mov dx,word ptr dvar2 ;取双字到DX.AX,其它几个可用于变量的运算符 SEG:取变量、标号段地址 TYPE:返回此变量类型存储的所需字节数。(对标号为-1,-2) LENGTH:取数组元素个数 SIZE:取数组字节数,设:DS=2000H XP DW ? X1 DB A,B,C ARRAY DW 100 DUP(1,2,3, 20(0) MOV AL,TYPE XP; 等效于MOV AL,2 MOV AL,TYPE X1 ;等效于MOV AL,1 MOV AL,LENGTH X1;等效于MOV AL,1 MOV AL,L

15、ENGTH ARRAY;等效于MOV AL,100 MOV AX,SIZE ARRAY;等效于MOV AX,200(有嵌套,不对) MOV AX,SEG XP ; AX=2000h,data segment abc db a,b,c string db ABCDEFGHIJ crlfs db 13,10,$ data ends code segment .mov cx,10mov bx,0 again: add stringbx,3 inc bxloop again ;循环,每次cx减1,不为0到指定标号,否则,退出lea dx,abc ;mov offset dxmov ah,9int 21h ;显示结果:abcDEFGHIJKLM,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号