- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章80868088汇编语言程序设计-1
第4章 8086/8088汇编语言程序设计 4.1 程序设计语言概述 4.2 8086/8088汇编语言的基本语法 一 汇编语言的种类和类型 二 语句格式 三 指令语句 四 伪指令语句 一 汇编语句类型 指令性语句 指示性语句 二 汇编语言语句格式 1 指令性语句: [标号:] [前缀] 助记符 [操作数],[操作数] [ ;注释] 寄存器 存储器单元 常量 变量或标号 表达式 常量的应用 1)指令语句源操作数中做立即数,它应与目的操作数的位数相一致,可以是8位或16位的。 如: MOV AX,1234H 2)在指令语句中的基址加变址的寻址方式中作位移量。 如:MOV BX,[SI+32H] 3)在数据定义伪指令中。 如:DB 12H ;定义一个字节数据 (1)算术运算符 +、-、*、/:加减乘除运算符 MOD:除法取余运算符 例如: MOV AL, 32 MOD 5 ;(AL)= 2 (3)关系运算符 关系运算是逻辑判定式,当为“真”时结果取0FFFFH,当为“假”时结果取0。 EQ 等于 LE 小于等于 NE 不等于 GT 大于 LT 小于 GE 大于等于 参与关系运算的必须是两个数值,关系运算是数值型的。 例如: 5 LT 6 = 0FFFFH (4) 取值运算符 取值运算符的格式: (1)求变量或标号段基址 格式:SEG 〈符号名〉 (2)求变量或标号偏移地址 格式:OFFSET 〈符号名〉 (3)变量或标号类型值 格式:TYPE 〈符号名〉 取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA 取值运算符的格式: (4)求为变量分配的字节数 格式:SIZE〈变量名〉 (5)求为变量分配的项数 格式:LENGTH 〈变量名〉 注意:SIZE和LENGTH要求为变量定义的数据项必须是用重复格式DUP()定义的。 取值运算符例 若BUFFER存储区是用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPE BUFFER 等于2 LENGTH BUFFER 等于200 SIZE BUFFER 等于400 注意:SIZE=TYPE*LENGTH (5)属性运算符 ① 保证运算时操作数类型的匹配 例 F1 DB 16H,38H F2 DW 1234H,26ABH MOV AX,WORD PTR F1 MOV BL,BYTE PTR F2 ③ 用PTR来改变距离属性 例:JMP FAR LLOOP CALL DWORD PTR [BX] (7)分离运算符 ⑴ 取低字节 格式:LOW ﹤符号名﹥ ⑵ 取高字节 格式:HIGH ﹤符号名﹥ 例:设SSY=2050H mov al , LOW 3080H ; al = 80H mov ah , HIGH SSY ; ah = 20H (8)其它运算符 方括号: [ ] 方括号中内容为操作数的偏移地址 段重设符 段寄存器名:[ ] 用于修改默认的段基地址 例: MOV AX,[BX] MOV AX,ES:[BX] 伪指令 由汇编程序执行的“指令系统”。伪指令没有对应的机器指令,它不是由8086/8088CPU来执行,而是由MASM-86识别,并完成相应的功能。 用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等 伪指令分类: (1)符号定义伪指令 (8)定位伪指令 (2)内存数据定义伪指令 (9)列表伪指令 (3)段定义伪指令 (10)系统隐含进位制伪指令 (4)段寄存器说明伪指令 (11)连接伪指令 (5)子程序定义伪指令 (12)记录伪指令 (6)模块开始伪指令 (13)结构伪指令 (7)模块结束伪指令 (14)块注释伪指令 (15)宏命令伪指令 EQU与特殊运算符PTR
文档评论(0)