汇编语言程序设计方法共47页文档
汇编语言程序设计

汇编语⾔程序设计第4章汇编语⾔程序设计§4.1 汇编语⾔的模式⼀、汇编语⾔源程序的⼀般模式[Name 模块名][Title 标题][定义宏][定义数据段][定义附加段][定义堆栈段]定义代码段源程序结束中括号括起的部分可以省略,可见在⼀个汇编语⾔源程序中必须要定义代码段,并且必须有源程序结束指令。
⼆、8086汇编语⾔程序的⼀个例⼦Pg90。
§4.2 语句⾏的构成汇编语⾔中的语句⼀般分为两种类型:指令性语句和指⽰性语句。
指令性语句的格式为:[标号:] 助记符 [操作数1[,操作数2]] [;注释]指⽰性语句的格式为:[名称] 助记符 [参数1,参数2,……] [;注释]标号和名称都是编程⼈员根据需要和⼀定的规则任意取的。
也可以认为汇编语⾔的语句⾏是由标记和分隔符(空格)构成。
⼀、标记1.IBM宏汇编的字符集(1)字母(2)数字符(3)特殊字符2.界符⽤于定界⼀个标记的结束或⼀个标记的开始,本⾝具有⼀定的意义。
3.常量出现在汇编语⾔源程序中的固定值称为常量。
(1)数值常量①⼆进制:以字母B结束。
②⼗进制:以字母D或⽆字母结束。
③⼋进制:以字母Q(或O)结束。
④⼗六进制:以字母H结束。
(2)字符常量指⽤单引号或双引号引起的字符或字符串。
4.标识符由程序员⾃⼰建⽴的字符序列(标号或名称)。
⼀个标识符不能超过31个字符,不能以数字开头。
5.保留字汇编语⾔中具有特殊意义的字符序列。
6.注释⼀⾏中分号以后的部分。
⽤于对⼀段或⼀⾏程序进⾏说明,便于阅读和理解。
⼆、符号具有⼀定意义的字符序列。
1.寄存器名2.变量段属性、偏移属性、类型属性3.标号段属性、偏移属性、类型属性4.常数5.其它三、表达式由操作数和运算符组合⽽成的序列。
1.操作数(1)⽴即数(2)寄存器操作数(3)存储器操作数2.运算符(1)算术运算符+、-、*、/、MOD(求余)(2)逻辑运算符AND、OR、NOT、XOR(3)关系运算符EQ、NE、LT、LE、GT、GE结果为“假”时,返回0,结果为“真”时,返回⼆进制全1。
汇编语言程序设计方法.

汇编语⾔程序设计⽅法.第四章汇编语⾔程序设计⽅法第⼀节汇编语⾔程序设计1、程序设计语⾔1)、机器语⾔直接⽤⼆进制数表⽰指令和数据的最原始的程序设计语⾔。
2)、汇编语⾔⽤助计符来表⽰的⾯向机器的程序设计语⾔。
⽤汇编语⾔编制的程序须要⽤“⼈⼯汇编”或“机器汇编”将其翻译成机器语⾔,才能被机器认识。
3)、⾼级语⾔⾼级语⾔是⼀种⾯向过程⽽独⽴于计算机硬件结构的通⽤计算机语⾔。
如FORTRAN、PASCAL、C语⾔等。
注意:①机器语⾔直接⾯对机器,实时性好,但难以编出较复杂的程序,现基本上被汇编语⾔代替;②汇编语⾔是⽬前单⽚机初学者采⽤的⼀种编程⽅法,它具有实时性强,对较复杂的程序也能编制。
③⾼级语⾔它⾯向过程易于编制复杂程序,具有通⽤性好,程序简单,但它要求占⽤较⼤的内存空间,实时性差,⽬前从事单⽚机的开发和研究⼯作须掌握这种⽅法。
2、汇编语⾔的规范1)、汇编语⾔源程序的格式标号:操作码⽬的操作数,源操作数;注释2)、汇编语⾔伪指令①ORG----起始地址伪指令;功能:⽤来规定⽬标程序或数据的起始地址。
格式:[标号:] ORG 16位地址说明:在⼀个程序中允许有多个ORG指令,以规定不同程序段的起始位置。
②END-----汇编结束伪指令;功能:⽤来告诉汇编程序,此源程序到此结束。
格式:[标号:] END说明:在⼀个程序中有且只有⼀个END指令。
例如:ORG 1000HSTART:MOV A,BJNB ACC.7,DONECPL ADONE:MOV B,AEND③EQU----赋值伪指令;格式:字符名称EQU 数或汇编符号功能:将右边值赋给左边⽤户定义的字符说明:a、由EQU赋的字符可以作数值、数据地址、代码地址。
b、由EQU伪指令所定义的符号必须先定义后使⽤。
例如:SDGFG EQU 58H ;表⽰SDGFG=58H④DB----定义字节伪指令;格式:[标号:] DB 8位(⼆进制)数据表。
功能:⽤于告诉汇编程序从指定的地址单元开始,定义若⼲个字节存储单元的内容。
汇编语言程序设计基本方法

相应传送指令:
MOV AX,DATA1
MOV DATA3,BX
01
MOV AL,DATA2[DI]
02
MOV DATA3[SI],DX
03
MOV CX,LENGTH DATA3
04
MOV BX,SIZE DATA3
05
MOV SI,OFFSET DATA2
06
指令中传送的是一个字还是一个字节,通常由操作数的类型确定。
下列指令中,没有确定的类型,是错误的。
MOV DATA3[SI],02H
03
MOV 2[SI],AL
04
MOV 4[DI],02
05
可以采用如下方式纠正:
06
MOV BYTE PTR 4[DI],02
01
02
如果两个操作数的类型不一致,也是错误的:
DATA1 DW 05H
DATA2 DB 0FH,10H,0AH
01
01
02
03
04
05
MOV AX, ES:[SI]
对BP寄存器
MOV AL, DATA2[BP];对应DS段
MOV AL, 10[BP]; 对应SS段
02
03
04
05
3.2.1 数据传送类指令
取有效地址指令(LEA) 将源操作数SRC的有效地址(偏移地址)送入寄存器REG中 比较: MOV AX,10H[DI] LEA AX,10H[DI] (DI)=0500H,(DS)=0200H
4.2 8086/8088指令系统
单/击/此/处/添/加/副/标/题/内/容
指令类型:
送指令
算指令
算指令
令
理指令和CPU控制指令
汇编语言源程序设计

操作数项:一或多个表达式,为执行程序提 供所需要的操作信息;
注释项:说明程序或语句的功能。“;”为 注释项的开始。根据需要可有可无。
各项之间必须用空格符(space)或制表符 (TAB)隔开。
微机原理
1.3.1 名字项
源程序中用下列字符表示名字: 字母:A~Z 数字:0~9 专用字符:?、·、@、-、$ 规定:数字不能用作名字的第一个字符,名字中 若用到·则必须是第一个字符,有效字符个数小于 等于31,不得使用属于系统专用的保留字。 名字项一般可以是标号或变量,均有段属性, 偏移属性,类型属性。
与指令 LEA BX,OPER_ONE 等价。
微机原理
⑸ SEG 格式:SEG Variable 或label 汇编程序将回送变量或标号的段地址值。 例:如果DATA_SEG是从存储器的05000H 地址开始的一个数据段的段名,OPER1是 该段中的一个变量名 则指令MOV BX,SEG OPER1 BX=0500H
程序段
微机原理
2. 用跳转表形成多路分支程序设计 利用跳转表可方便地实现多路分支程序设计,
跳转表结构的程序流程。
比较/测试
判断条件
程序段1
程序段2
…
图4.9 跳转表结构程序流程
程序段n
微型计算机基本原理与接口技术
汇编语言源程序是用汇编语言编制而成的 程序。
汇编是指把汇编语言源程序翻译成机器语 言(目标代码)的过程。
汇编程序(Assembler)是指完成汇编过 程的程序。
1.3 汇编语言语句格式
微机原理
格式:[name]operation operand;[comment] 名字项:符号,根据需要可有可无;
精品课件--汇编语言程序设计

3
4.1.1 汇编语言的基本语法
1.语句的一般格式
指令性语句的一般格式为: [标识符:] 操作符 [操作数] [;注释]
伪指令语句的一般格式为: [标识符] 操作符 [操作数] [;注释]
9
④ LENGTH操作符
功能:当数据用重复数据操作符DUP定义时,汇编程序将回送外层DUP给定的 值,对于其他情况返回值总为1。
格式:LENGTH 变量名或标号
例:N1 DB 10 DUP(2,3,5 DUP(1)),6
...
MOV CX,LENGTH N1
;指令执行后,(CX)=10
⑤ SIZE操作符
ARRAY DB 12H,-6,56H COUNT EQU $-ARRAY 定义中$-ARRAY表示当前字节的偏移地址减去ARRAY首地址单元的偏移地址,汇 编后COUNT的值为3。显然,如果ARRAY定义为DW,则汇编后COUNT的值为6。
18
5.过程与宏定义伪指令
(1)过程定义伪指令
过程又称子程序,是程序的一部分,它由过程定义伪指令PROC和ENDP分别定义过 程的开始和结束,由RET指令作为其返回指令,过程定义语句的格式如下:
DAT1 DB 10H,25,? DAT2 DW 1234H DAT3 DD 1234H
16
例:用DUP重复定义并且可以嵌套: N1 DB 2 DUP(6,3 DUP(7)) 例:定义字符: STR1 DB ‘AB12’ STR2 DW ‘AB’
17
4.地址计数器 $ 功能:①当$用在指令中时,它表示本条指令第一个字节的偏移地址; ②当$用在数据定义伪指令中时,它表示的是当前字节的偏移地址。 例如指令JMP $+8 表示跳转至JMP指令的首地址+8的地址处。 又如在数据段中定义如下: