微机原理与接口技术第4章.ppt
《微机原理与接口技术第4章.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第4章.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章汇编语言程序设计汇编语言程序设计1主要内容主要内容n n汇编语言源程序的结构汇编语言源程序的结构n n汇编语言语句格式汇编语言语句格式n n伪指令伪指令n n功能调用功能调用n n汇编语言程序设计汇编语言程序设计24.1 汇编语言源程序汇编语言源程序n n汇编语言源程序汇编语言源程序n n汇编程序汇编程序用助记符编写用助记符编写汇编程序汇编程序汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序源程序的编译程序源程序的编译程序31、汇编语言程序执行过程、汇编语言程序执行过程n n输入汇编语言源程序(输入汇编语言源程序(输入汇编语言源程序(输入汇编语言源程序(EDITEDI
2、T)n n汇编(汇编(汇编(汇编(MASMMASM)n n链接(链接(链接(链接(LINKLINK)n n调试(调试(调试(调试(TDTD)源文件源文件.ASM目标文件目标文件.OBJ可执行文件可执行文件.EXE最终程序最终程序42.汇编语言源程序结构汇编语言源程序结构数据段名数据段名 SEGMENTSEGMENT 数据段名数据段名 ENDSENDS附加段名附加段名 SEGMENTSEGMENT 附加段名附加段名 ENDSENDS堆栈段名堆栈段名 SEGMENTSEGMENT 堆栈段名堆栈段名 ENDSENDS代码段名代码段名 SEGMENTSEGMENT 代码段名代码段名 ENDSENDS
3、ENDEND 53.汇编语言语句类型汇编语言语句类型指令性语句指令性语句指示性语句指示性语句CPU执行的语句,执行的语句,能够生成目标代码能够生成目标代码CPU不执行,而由汇不执行,而由汇编程序执行的语句,编程序执行的语句,不生成目标代码不生成目标代码64.汇编语言语句格式汇编语言语句格式 指令性语句:指令性语句:标号:标号:标号:标号:前缀前缀前缀前缀 助记符助记符助记符助记符 操作数操作数操作数操作数,操作数操作数操作数操作数 ;注释;注释;注释;注释 指令的符号地址指令的符号地址标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前加分号7指示性语句格式指示性语句格式 名字名字名字名
4、字 伪指令助记符伪指令助记符伪指令助记符伪指令助记符 操作数操作数操作数操作数 ,操作数,操作数,操作数,操作数,;注;注;注;注释释释释 变量的符号地址变量的符号地址其后不加冒号其后不加冒号8(1)标号、名字标号、名字n n标号后有冒号,在指令性语句前;名字后不标号后有冒号,在指令性语句前;名字后不标号后有冒号,在指令性语句前;名字后不标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。加冒号,在指示性语句前。加冒号,在指示性语句前。加冒号,在指示性语句前。n n标号标号标号标号符号地址符号地址符号地址符号地址 名字名字名字名字变量名、段名和过程名等变量名、段名和过程名等变量名、段
5、名和过程名等变量名、段名和过程名等n n英文字母、数字及专用字符组成英文字母、数字及专用字符组成英文字母、数字及专用字符组成英文字母、数字及专用字符组成,最大长度最大长度最大长度最大长度不能超过不能超过不能超过不能超过31313131个个个个,且不能由数字打头且不能由数字打头且不能由数字打头且不能由数字打头,不能用不能用不能用不能用保留字保留字保留字保留字(如寄存器名如寄存器名如寄存器名如寄存器名,指令助记符指令助记符指令助记符指令助记符,伪指令伪指令伪指令伪指令)。9(2)操作码操作码n n指令码指令码指令码指令码n n伪指令助记符伪指令助记符伪指令助记符伪指令助记符n n指示汇编程序要完成
6、的操作。指示汇编程序要完成的操作。指示汇编程序要完成的操作。指示汇编程序要完成的操作。n n作用:作用:作用:作用:n n定义变量定义变量定义变量定义变量n n分配存储单元分配存储单元分配存储单元分配存储单元n n指示程序开始和结束等指示程序开始和结束等指示程序开始和结束等指示程序开始和结束等命令命令CPU要完成的操作要完成的操作10(3)注注 释释n n用分号作为注释的开始;用分号作为注释的开始;n n用于说明程序或语句的功能,以用于说明程序或语句的功能,以便于阅读和理解便于阅读和理解11(4)操作数操作数 寄存器寄存器存储器单元存储器单元 常量常量 数据项数据项 标号标号 变量变量 表达式
7、表达式12常常 量量n n数字常量(二、十、十六进制)数字常量(二、十、十六进制)n n字符串常量字符串常量 例:例:A n nMOV ALMOV AL,AA 例:例:ABCD汇编时被译成对应的汇编时被译成对应的ASCII码码41414141H H H H,42424242H H H H,43H43H43H43H,44H44H44H44H用单引号引起的字符或字符串用单引号引起的字符或字符串13标号标号n n用符号表示的地址,称为符号地址用符号表示的地址,称为符号地址n n标号的三个属性:标号的三个属性:段地址段地址标号对应指令首字节所在段标号对应指令首字节所在段 的段地址的段地址 偏移地址偏移
8、地址段内的偏移地址。段内的偏移地址。类型类型NEARNEAR和和FARFAR14变变 量量n n代表内存中的数据区,程序中视为存储器操作数代表内存中的数据区,程序中视为存储器操作数代表内存中的数据区,程序中视为存储器操作数代表内存中的数据区,程序中视为存储器操作数n n变量的属性:变量的属性:变量的属性:变量的属性:段地址段地址段地址段地址变量所在段的段地址,变量在哪个段内定变量所在段的段地址,变量在哪个段内定变量所在段的段地址,变量在哪个段内定变量所在段的段地址,变量在哪个段内定 义,其段属性就是哪个段的段基址。义,其段属性就是哪个段的段基址。义,其段属性就是哪个段的段基址。义,其段属性就是
9、哪个段的段基址。偏移地址偏移地址偏移地址偏移地址变量所在段内的偏移地址,即从段的起变量所在段内的偏移地址,即从段的起变量所在段内的偏移地址,即从段的起变量所在段内的偏移地址,即从段的起 始地址开始到变量对应数据区的第一个存始地址开始到变量对应数据区的第一个存始地址开始到变量对应数据区的第一个存始地址开始到变量对应数据区的第一个存 储单元之间的字节数储单元之间的字节数储单元之间的字节数储单元之间的字节数 变量的段属性与偏移属性构成了变量的逻辑地址。变量的段属性与偏移属性构成了变量的逻辑地址。变量的段属性与偏移属性构成了变量的逻辑地址。变量的段属性与偏移属性构成了变量的逻辑地址。类型类型类型类型字
10、节型、字型和双字型字节型、字型和双字型字节型、字型和双字型字节型、字型和双字型15变变 量量注:注:n n变量类型与指令的要求必须相同变量类型与指令的要求必须相同n n定义变量时,变量名对应的是数据定义变量时,变量名对应的是数据区的首地址区的首地址16表达式表达式算术运算算术运算逻辑运算逻辑运算关系运算关系运算取值运算和属性运算取值运算和属性运算其它运算其它运算由操作数和运算符组成由操作数和运算符组成17算术运算和逻辑运算符算术运算和逻辑运算符n n算术运算符算术运算符n n+,-,*,/,MODMODn n逻辑运算符逻辑运算符n nANDAND,OROR,NOTNOT,XORXORn n例:
11、例:n nMOV ALMOV AL,8 AND 48 AND 4n nMOV ALMOV AL,8+4-18+4-118关系运算符关系运算符n n表示关系是否成立的运算符表示关系是否成立的运算符n n参与关系运算的必须是两个数值参与关系运算的必须是两个数值n n关系成立,结果关系成立,结果=FFFFHn n关系不成立,结果关系不成立,结果=0。n n运算符:运算符:n nEQEQ,NENE,LTLT,GTGT,LELE,GEGE例:例:例:例:MOV DL,16 LT 10MOV DL,16 LT 10 MOV DL,0 MOV DL,0 AND AX,555 GT 222 AND AX,55
12、5 GT 222 AND AX,0FFFFH AND AX,0FFFFH19取值运算符取值运算符取得其后变量或标号的偏移地址取得其后变量或标号的偏移地址取得其后变量或标号的段地址取得其后变量或标号的段地址TYPE 取取变量或标号的类型变量或标号的类型变量或标号的类型变量或标号的类型LENGTH 取所定义存储区的长度取所定义存储区的长度SIZE 取所定义存储区的字节数取所定义存储区的字节数n 用于分析存储器操作数的属性用于分析存储器操作数的属性OFFSETSEG20取值运算符例取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,D
13、ATA等价于等价于21取值运算符例取值运算符例n n若若若若BUFFERBUFFER存储区用如下伪指令定义:存储区用如下伪指令定义:存储区用如下伪指令定义:存储区用如下伪指令定义:BUFFER DW 200 DUP(0)BUFFER DW 200 DUP(0)BUFFER DW 200 DUP(0)BUFFER DW 200 DUP(0)则:则:则:则:TYPE BUFFERTYPE BUFFERTYPE BUFFERTYPE BUFFER 等于等于等于等于2 2 2 2 LENGTH BUFFER LENGTH BUFFER LENGTH BUFFER LENGTH BUFFER 等于等于等
14、于等于200200200200 SIZE BUFFERSIZE BUFFERSIZE BUFFERSIZE BUFFER 等于等于等于等于400400400400 对于变量有对于变量有对于变量有对于变量有3 3种:种:种:种:1 1 字节型;字节型;字节型;字节型;2 2 字型;字型;字型;字型;4 4 双字型双字型双字型双字型;对于标号有对于标号有对于标号有对于标号有2 2种:种:种:种:1 1 NEARNEAR(段内)段内)段内)段内)2 2 FARFAR(段间)段间)段间)段间)22属性运算符属性运算符n 用于指定存储器操作数的类型用于指定存储器操作数的类型n格式:格式:类型类型 PTR
15、 表达式表达式n 例:例:MOV BYTE PTR1000,0 MOV WORD PTR1000,0234.2 伪指令伪指令掌握:掌握:n n伪指令的格式及实现的操作伪指令的格式及实现的操作n n伪指令的应用伪指令的应用244.2 伪指令伪指令n n由汇编程序执行的由汇编程序执行的“指令系统指令系统”n n作用:作用:n n定义变量;定义变量;定义变量;定义变量;n n分配存储区分配存储区分配存储区分配存储区n n定义逻辑段;定义逻辑段;定义逻辑段;定义逻辑段;n n指示程序开始和结束;指示程序开始和结束;指示程序开始和结束;指示程序开始和结束;n n定义过程等。定义过程等。定义过程等。定义过
16、程等。25常用伪指令常用伪指令数据定义伪指令数据定义伪指令符号定义伪指令符号定义伪指令段定义伪指令段定义伪指令结束伪指令结束伪指令过程定义伪指令过程定义伪指令宏命令伪指令宏命令伪指令26一、数据定义伪指令一、数据定义伪指令n n用于定义数据区中变量的类型及大小用于定义数据区中变量的类型及大小n n格式格式:变量名变量名 DB 初值表达式初值表达式 变量名变量名 DW 初值表达式初值表达式变量名变量名 DD 初值表达式初值表达式 变量名变量名 DQ 初值表达式初值表达式变量名变量名 DT 初值表达式初值表达式271.数据定义伪指令助记符数据定义伪指令助记符n nDB DB 定义的变量为字节型定义
17、的变量为字节型定义的变量为字节型定义的变量为字节型n nDW DW 定义的变量为字类型(双字节)定义的变量为字类型(双字节)定义的变量为字类型(双字节)定义的变量为字类型(双字节)n nDD DD 定义的变量为双字型(定义的变量为双字型(定义的变量为双字型(定义的变量为双字型(4 4字节)字节)字节)字节)n nDQ DQ 定义的变量为定义的变量为定义的变量为定义的变量为4 4字型(字型(字型(字型(8 8字节)字节)字节)字节)n nDT DT 定义的变量为定义的变量为定义的变量为定义的变量为1010字节型字节型字节型字节型功能:功能:功能:功能:让汇编程序在内存中划出指定个数的存储让汇编程
18、序在内存中划出指定个数的存储让汇编程序在内存中划出指定个数的存储让汇编程序在内存中划出指定个数的存储单元,然后将这些存储单元与变量名联系起来,单元,然后将这些存储单元与变量名联系起来,单元,然后将这些存储单元与变量名联系起来,单元,然后将这些存储单元与变量名联系起来,并在存储单元中预置初值。并在存储单元中预置初值。并在存储单元中预置初值。并在存储单元中预置初值。28n n2、定义一组数据、定义一组数据 例例1:BUFF DW 1234H,56Hn n3、定义一串字符,定义字符串必须用、定义一串字符,定义字符串必须用 DB伪指令伪指令例例2:DATA1 DB ABCD,66H AB CD41H4
19、2H43H44H66H294.重复操作符重复操作符n n复制操作符复制操作符DUP可为一个数据区的各单元可为一个数据区的各单元预置重复的数值预置重复的数值 例:例:ALL_ZERO DB 0,0,0,0,0用复制操作:用复制操作:ALL_ZERO DB 5 DUP(0)305.“?”的作用的作用n n表示随机值,用于预留存储空间表示随机值,用于预留存储空间n nMEM1 DB 34H,A,?,?DW 20 DUP(?)(?)预留预留40个字节单元,每单元为随机值个字节单元,每单元为随机值随机数随机数占占1个字节单元个字节单元31数据定义伪指令例数据定义伪指令例n n例如:例如:例如:例如:B0
20、 DB 2B0 DB 2B0 DB 2B0 DB 2 B1 B1 B1 B1 DB 3 DB 3 DB 3 DB 3,5 5 5 5,?,?,?,?,9 9 9 9 B2 B2 B2 B2 DW 10H DW 10H DW 10H DW 10H,2 2 2 2DUPDUPDUPDUP(1234H1234H1234H1234H,?),?),?),?)B3B3B3B3 DD 1 DD 1 DD 1 DD 1,2 2 2 2 B4 B4 B4 B4 DB 0 DB 0 DB 0 DB 0,2 2 2 2DUPDUPDUPDUP(?,(?,(?,(?,1 1 1 1,2 2 2 2DUPDUPDUPD
21、UP(7 7 7 7))以上变量在内存以上变量在内存中的存放形式中的存放形式3233数据定义伪指令例数据定义伪指令例n nM1 DB How are you?M1 DB How are you?n nM2 DW 3 DUP(11H)M2 DW 3 DUP(11H),3344H3344H DB 4 DUPDB 4 DUP(?)(?)(?)(?)n nM3 DB 3 DUPM3 DB 3 DUP(22H22H,11H11H,?),?),?),?)以上变量在内存以上变量在内存中的存放形式中的存放形式34数据定义伪指令例数据定义伪指令例M1How aM211H11H00H44H33H r e you?
22、11H00H00H随机数随机数M311H22H11H22H11H22H?35二、符号定义伪指令二、符号定义伪指令1 1 1 1、等值语句、等值语句、等值语句、等值语句n n格式:格式:格式:格式:符号名符号名符号名符号名 EQU EQU EQU EQU 表达式表达式表达式表达式n n操作:操作:操作:操作:名称代替表达式,不可重新定义名称代替表达式,不可重新定义名称代替表达式,不可重新定义名称代替表达式,不可重新定义n n例:例:例:例:CONSTANTCONSTANTCONSTANTCONSTANTEQUEQUEQUEQU100100100100 VAR EQU 30H+99HVAR EQU
23、 30H+99HVAR EQU 30H+99HVAR EQU 30H+99H MEM EQU DS:BP MEM EQU DS:BP MEM EQU DS:BP MEM EQU DS:BP20H20H20H20H36二、符号定义伪指令二、符号定义伪指令2|2|2|2|等号语句等号语句等号语句等号语句n n格式:变量名表达式格式:变量名表达式格式:变量名表达式格式:变量名表达式n n说明:说明:说明:说明:“”伪指令用来为右边的表达式伪指令用来为右边的表达式伪指令用来为右边的表达式伪指令用来为右边的表达式 定义一个替代符号,且只能是数值定义一个替代符号,且只能是数值定义一个替代符号,且只能是数值
24、定义一个替代符号,且只能是数值 表达式,不能为字符串或地址表达表达式,不能为字符串或地址表达表达式,不能为字符串或地址表达表达式,不能为字符串或地址表达 式;式;式;式;“”伪指令定义的符号允许重复伪指令定义的符号允许重复伪指令定义的符号允许重复伪指令定义的符号允许重复 定义。定义。定义。定义。37三、段定义伪指令三、段定义伪指令格式:格式:格式:格式:段名段名段名段名 SEGMENT SEGMENT SEGMENT SEGMENT 定位类型定位类型定位类型定位类型 组合类型组合类型组合类型组合类型 类别类别类别类别 段名段名段名段名 ENDSENDSENDSENDS38定位类型定位类型n n
25、PARA:段的起点从节边界开始段的起点从节边界开始 (16个字节为个字节为1节)节)n nBYTE:段的起点从存储器任何地址开始段的起点从存储器任何地址开始n nWORD:段的起点从偶地址开始段的起点从偶地址开始n nPAGE:段的起点从页边界开始段的起点从页边界开始 (256个字节为个字节为1页)页)39组合类型组合类型n n与其它模块中的同名段在满足定位类型的前提与其它模块中的同名段在满足定位类型的前提与其它模块中的同名段在满足定位类型的前提与其它模块中的同名段在满足定位类型的前提 下具有的组合方式:下具有的组合方式:下具有的组合方式:下具有的组合方式:n nNONENONE:不组合不组合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术
限制150内