- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机_04第四章:汇编程序设计课件
南理工紫金学院
帅辉明;汇编语言
数据和表达式
伪指令
语法
程序设计
顺序、分支、循环、子程序
DOS功能调用;机器语言:由0、1代码所组成的语言。面向机器,同一组代码对不同的计算机表示不同的含义。
汇编语言:由助记符表示的语言。面向机器。
高级语言:用一些接近人们书写习惯的英语和数学表达式形式的句子编写程序。这种语言不面向机器,而是面向过程、面向对象。
;C、C++、PASCAL语言
如:Turbo C、VC++、DELPHI、GNU GCC
;1.数据
(1)常数
表示汇编过程中已经有确定数值的量,主要用于做指令中的立即数、寻址中的位移量,或在伪指令语句中给变量赋值。
数值常数:由二、八、十和十六进制表达的数
字符串常数:用’ ’(或“ ”)括起来的一串ASCII码字符,等效为一组数值常数
;内存单元的数据,变量值在程序运行期间可以改变。
需要事先定义,通过变量名引用。变量名表示变量的首地址。
在数据段或附加段用数据定义伪指令定义。
变量的属性
段:变量所在段基址
偏移量:变量在段内的偏移量
类型:变量的字节数,DB、DW、DD
;在指令前面,代表指令所在存储单元的地址。
通常作为程序中转移、调用、循环指令的转移目标地址。
定义方式- 标识符:
标号的属性:
段:变量所在段基址
偏移量:变量在段内的偏移量
距离: NEAR段内标号、 FAR段外标号
;由常数、变量或标号、运算符连接而成
分类:数字表达式、地址表达式
(1)运算符;MOV AX, VALUE MOD 7 ;VALUE=50
MOV AL, NOT 0FH
MOV AX, 0FH EQ 1111B
;对存储单元的操作;SEG返回变量/标号的段基址
OFFSET返回变量/标号的段内偏移
举例:
MOV AX,SEG K1
MOV BX,SEG ARRAY
MOV BX,OFFSET ARRAY
变量K1所在段的段基址为0915H
变量ARRAY所在段的段基址为0947H,偏移为0100H
;数据;LENGTH返回数组元素的个数
若变量用重复数据操作符DUP定义,则返回最外层DUP的值
若变量无DUP说明则返回1
SIZE返回数组变量所占的总字节数
=LENGTH*TYPE
;K1 DB 10H DUP(0)
K2 DB “ABCDEF”
TYPE K1 = TYPE K2 =
LENGTH K1 = LENGTH K2 =
SIZE K1 = SIZE K2 =
;类型修改运算符PTR;优先级;指令语句
伪指令语句
宏指令语句
;定义变量,并关联变量名和存储单元地址。
定义格式:[变量名] 类型 数据项表
类型:DB DW DD DQ DT
数据表项:变量的长度、数组元素个数、变量的初值
;DBYTE DB -5H
一个字节变量,值为-5H
DWORD DW 6*3
一个字变量,值为18
DDWORD DD 1234H
一个双字变量,值为1234H
;STRING1 DB ‘AB’
一个字节变量,值为’A’
STRING2 DW ‘AB’
一个字变量,值为’AB’
STRING3 DD ‘AB’
一个双字变量,值为’AB’
;伪指令:DUP,重复赋值
格式:重复次数 DUP(操作数,…..,操作数)
SUBB DW 1000 DUP (?)
包含1000数组元素
值不确定
SDKP DB 2 DUP (0,2 DUP(1))
包含2个数组元素
每个元素由2部分构成,0和另一个数组B
数组B包含2个元素,值为1
;BUFF DB 16 DUP (‘Welcome’)
包含16个元素
每个元素的值为’Welcome’
LING DB 4 DUP (0,1)
包含4个元素
每个元素的数据为0和1
;赋值伪指令:EQU
定义格式:符号名 EQU 表达式
等号伪指令:=
定义格式:符号名 = 表达式
特点:都不直接产生机器指令
区别:赋值伪指令不可以重名
;COUNT = 5 ;常数
NUM= 13+5-4 ;数值表达式
NUM = NUM+1
ADR1 EQU DS:[BP+4] ;地址表达式
CREG EQU CX ;寄存器名
CBD EQU DAA ;指令名
L1 EQU SUBSTART ;标号名
WO EQU WORD PTR DBYTE;变量名
;把源程序划分成若干逻辑段,便于汇编程序生产相应代码,便于连接程序生产可执行程序。
一个汇编语言源程序可以包含若干个逻辑段(代码段、数据段、附加段或堆栈段),段与段之间的顺序可随
文档评论(0)