现代微型计算机原理与接口技术第04章 汇编程序设计

合集下载

微型计算机原理与应用第4章汇编语言程序设计基本方法

微型计算机原理与应用第4章汇编语言程序设计基本方法

4.1.2汇编语言中语句的组成
汇编语言源程序是由一条条语句组成的。 语句则由名称、 操作助记符、 操作数、 注释四部分组成, 见表 4.1 所示。
1. 名称
语句中的名称是一个标识符, 可由字母(a, b, c, ……, z), 数字(0, ……, 9)及特殊符号(?, ·, @, -, $)组成。名称必须由字母 打头,若名称中有圆点符,则圆点符又必须用作第一个字符, 数字不能用作第一个字符。构成名称的字符总数可多达 31 个, 若超过 31 个字符,则 31 个字符以后的字符无效。
操作数不是每条语句所必须的。若语句为指令,那么语 句中可以没有操作数,也可以有1~2 个操作数。如上例中的 第一条语句, 具有 2 个操作数。 若语句为伪指令,那么, 可以有多个操作数。 如上例中的第二条语句,具有 4 个操作 数。 当语句中具有 2 个以上的操作数时,操作数之间应用逗 号“,”分隔,而操作数与操作助记符之间必须以空格分隔。
movdata3si02mov2sialmov4di02上述指令中的目的操作数均为寄存器相对寻址方式所指的内存某单元第条指令的目的操作数的类型将取决于变量data3的类型只要变量data3已定义其类型是明确的而后两条指令的目的操作数的类型就不明确了但因第条指令因源操作数与目的操作数的类型均不明确因而为非法指令此时必须用前面介绍的ptr操作符来指明其操作类型格式如下
4.1.1 中的变量DATA1~DATA4;
(2) 带 引 号 的 字 符 串 。 如 例 4.1.1 中 的 变 量 DATA5 、 DATA6
4.
注释仅用作语句或程序段的说明,它不是程序的可执行 部分, 汇编时不形成任何目标码。注释必须以分号“;”开 头。 它可以作为语句的一个部分,也可以作为一个单独的语 句。

微机原理与接口技术PPT_第4章 汇编语言程序设计

微机原理与接口技术PPT_第4章 汇编语言程序设计

分段结构 程序按段编写, 内存分段编址相对应。 程序按段编写 与8086内存分段编址相对应。 内存分段编址相对应 每段由伪操作SEGMENT开始、由ENDS结束。 开始、 结束。 每段由伪操作 开始 结束 程序可由多个段构成,至少有一个代码段。 程序可由多个段构成,至少有一个代码段。 程序最后为END结束语句,后跟一启动地址。 程序最后为 结束语句,后跟一启动地址。 结束语句 启动地址指示程序开始执行的第一条语句。 启动地址指示程序开始执行的第一条语句。 程序中设有返回DOS的功能。 的功能。 程序中设有返回 的功能 使程序执行完后返回DOS系统的命令接受状态。 系统的命令接受状态。 使程序执行完后返回 系统的命令接受状态 程序中用到内存操作数时, 程序中用到内存操作数时, 应按操作数的寻址方式,给相应的段寄存器赋值 应按操作数的寻址方式 给相应的段寄存器赋值
根据语句功能的不同, 名字项可用来表示段名、 根据语句功能的不同, 名字项可用来表示段名、变量名 标号、过程名等。 、 标号、过程名等。 • 名字项用一个符号表示。 名字项用一个符号表示。 对符号的规定: 对符号的规定 ① 由字符 由字符A~Z ,a~z ,0~9及符号 、$、下划线 等组成 及符号@、 、下划线_ 及符号 最长31个字符 超出部分忽略。 个字符, ,最长 个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 ② 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 如指令的助记符等 如指令的助记符等) ③ 不使用汇编程序中的保留字。 (如指令的助记符等 对定义的符号不区分大小写。但为便于记忆, ④ 对定义的符号不区分大小写。但为便于记忆,名字的定 义应该做到见名知意。 义应该做到见名知意。
例 4-1 给出一个完整的汇编语言源程序 完成两个字节数据相加。 完成两个字节数据相加。

微机原理与接口技术第四章汇编语言程序设计

微机原理与接口技术第四章汇编语言程序设计

汇编语言程序设计
2
汇编语言
汇编指令是由助记符号表示的机器指令,它与机器指令 一一对应。 伪指令是向汇编程序提供如何进行汇编工作的命令。 汇编指令、伪指令、宏指令和汇编程序一起组成了汇编 语言。
用汇编语言编制的用户程序称为汇编语言源程序。
补充例题
汇编语言程序设计
4.1.2 汇编与连接
将一个汇编指令翻译成机器语言的过程称为汇编。
汇编语言程序设计
2. 操作项
操作项表示语句要实现的的具体操作,可以是指令、宏指令语 句、伪指令的助记符,操作项是汇编语句中不可缺少的部分。汇编 程序对上述三类语句会作不同的处理。
对指令语句,汇编程序会将它翻译成二进制代码;
对于宏指令语句,汇编程序将其展开,也就是用宏体替代原来的 宏指令语句,并翻译成机器指令。 对于伪指令语句,汇编程序会按其指定的伪操作进行处理。
汇编语言程序设计
标识项的书写有严格的规定,这可使用下列字符;
字母 A~Z、a~z; 数字 0~9; 特殊符号 ?、· 、@、$等。 标识项的第1个字符不可以是数字,必须是字母或特殊字符,但是问号 本身不能单独作为标识,标识中如果用到“·”,则必须是第一个字 符。标识最多31个字符组成,多则无效。
注意:标识不能使用汇编语言的专用保留字。寄存器名,8086、 8088汇编语言中的指令助记符,伪指令名,表达式中使用的运算符 和属性运算符等均不能作为标识项,否则汇编时会给出错误信息; 标识项在程序中不能重复定义。
汇编语言源程序由若干语句组成,这些语句可分为三类: 指令语句。用助记符表示的机器指令,它们由汇编程序汇编成相应 的能被CPU直接识别并执行的目标代码。 宏指令语句。允许用户为多次重复使用的程序段命一个名字,然后 可在程序中用这个名字代替该程序段,将定义的过程称为宏定义。 将该程序段称为宏。 宏指令语句就是宏的引用。 伪指令语句。向汇编程序提供汇编过程要求的一些辅助信息。如: 给变量分配内存单元地址、定义各种符号、实现分段等。 伪指令与指令性语句最大区别是:伪指令语句经汇编后不产生任何机 器代码,而指令性语句经汇编后会产生相应的机器代码;其次,伪指 令语句所指示的操作是在程序汇编时就完成了的,而指令性语句的操 作必须在程序运行时才能完成。

微机原理与接口技术(朱红)第4章 汇编语言程序设计

微机原理与接口技术(朱红)第4章 汇编语言程序设计

COUNT = 123 COUNT = COUNT +1
(4) 表达式(常量表达式)
表达式一般是由运算符连接的各种常量所构成 汇编程序在汇编过程中计算表达式,最终得到 一个确定的数值,所以也是常量 表达式的数值在程序运行前的汇编阶段计算, 所以组成表达式的各部分必须在汇编时就能确 定 经常使用的是加减乘除(+ - * / ) 例如:
微机原理与接口技术
第四章 汇编语言程序设计
主要内容
汇编语言的特点和编译过程
汇编语言源程序格式
指示性语句
系统功能调用方法 汇编程序设计方法
综合举例
汇编语言的特点和编译过程
汇编语言对机器的依赖性很大,每种机器都有他专用的汇编语 言,低级语言,编程困难。 汇编指令是符号化的机器指令,和机器指令一一对应 汇编指令的目标代码占用的内存少,执行速度快,效率高,实 时性强。 可以直接操作计算机硬件,例如寄存器。 用汇编语言编写的程序为“源程序”,扩展名为“.asm”, 可以用各种文本编辑软件编写。 源文件经过“编译”,翻译成计算机可以识别和运行的二进制 代码(目标程序,也称为OBJ文件)。完成汇编任务的程序 称为“汇编程序”。常用的汇编程序为MASM.EXE。 目标程序还不能直接被计算机运行,需要经过“连接程序”, 形成可执行程序(.EXE),才能被计算机运行。
常量、变量和标号
汇编语言的数据可以简单分为常量和变量 常量可以作为指令的立即数或伪指令的参数, 变量主要作为存储器操作数 汇编语言语句中的名字和标号具有逻辑地址 和类型属性,主要用做地址操作数,也可以 作为立即数和存储器操作数
常量
常量表示一个固定的数值,它又分成多种形式, 可以以多种数制及字符形式出现。 1. 数字常量 (2、8、10、16进制数) 2. 字符串 3. 符号常量 4. 数值表达式

微机原理与接口技术-汇编语言程序设计

微机原理与接口技术-汇编语言程序设计

第四章 汇编语言 程序设计
2.字符和字符串
字符或字符串常量是由包含在单引号内的1或多个ASCII 字符构成的。汇编程序把它们表示成一个字节序列,一个 字节对应一个字符,把引号中的字符翻译成它的ASCII值 。 例如“A”等价于41H,“AB”等价于4142H。
第四章 汇编语言 程序设计
3. 符号常量 符号常量使用标识符表达一个数值。常量使用有意
数字组成 由 “0”或“1”组成的序列,以字母B或b结尾 由若干个0~7的数字组成的序列,以字母O或o结尾 由若干个0~9的数字组成的序列,以字母D或d结尾,或没有任何字母作结尾 由若干个0~9的数字或A~F的字母所组成的序列,以字母H或h结尾
表4-1 各种进制的常数
举例 00101100B 255O、377O 1234D或1234 56H、0BA3FH
名字 伪指令助记符 参数,参数, … ;注释
第四章 汇编语言 程序设计
1.标号与名字
标号是某条指令所存放单元的符号地址,它是转移(条件 转移或无条件转移)指令或调用(CALL)指令的目标操 作数。名字可以是变量、逻辑段名、子程序名等,反映变 量、逻辑段和子程序等的逻辑地址。在汇编语言源程序中, 为了使程序更具有普遍性,及便于程序的修改,用户常用 名字等代替存储单元、数据、表达式等,如例中的存储单 元 SUM、输入输出端口 PROT_VAL 等就是。 一个标识符是由最多为31个字母、数字及规定的特殊字 符(? @ _ $)等组成的,且不能用数字打头(以免与十 六进制数相混淆)。
第四章 汇编语言 程序设计
变量定义伪指令有DB、DW、DD、DF、DQ、DT。
助记
变量类型
变量定义含义

DB
字节
分配一个或多个字节单元,每个数据是字节量,也可以是字符串常量;

微型计算机原理及应用教程第4章 汇编语言程序设计

微型计算机原理及应用教程第4章  汇编语言程序设计

存器名 ( 如 AX , CS) ,指令助记符 ( 如 MOV , ADD) ,伪指令 ( 如 SEGMENT , D
B),运算符(如GE,EQ)和属性操作符(如PTR,OFFSET,SEG)等。
指令助记符:又称操作码,它是语句中唯一必不可少的部分。 指
令语句中的助记符规定这个语句中的操作类型; 操作数:用来存放助记符要求的操作数,使之能实现预期的目的。 指令语句可能有一个、两个或没有操作数,可充当操作数的有常量、变 量、标号、寄存器和表达式等。
汇编程序的作用
1,将源程序翻译成机器语言程序。
2,按用户要求自动分配存储区域(如代码区、数据区等) 。 3,自动地把各种进制数转换成二进制数。
4,自动把字符转换成对应的ASCII码。
5,计算表达式的值。 6,自动对源程序进行检查,指出语法错误(如非法格式、未定义 的助记符、标号、漏掉操作数等)。
指令和伪指令
第4章 汇编语言程序设计
4.1 汇编语言程序 4.2 汇编语言的语句 4.3 汇编语言程序的上机过程及调试 4.4 汇编语言程序设计 4.5 汇编编程实例 第4章复习题
4.1
汇编语言程序
4.1.1汇编语言的基本概念 1.机器语言:指令和数据都用二进制代码表示,计算机能够直接识 别与执行,称之为机器语言。 2.汇编语言:是用伪指令、指令、符号地址、标号等来编写的语言, 汇编语言程序是机器语言的符号表示。 注意:汇编语言源程序文件的扩展名必须为 .ASM 汇编语言是和计算机的硬件(如寄存器、标志位、中断系统等) 密切相关的。 汇编语言编写的程序效率高,节省内存,运算速度快。
微机系统的内存是分段管理的,为了与之相对应,汇编语言源程 序也分若干个段来构成。 8086CPU 有四个段寄存器,运行的程序在某个 时刻最多可访问四个段。在定义段时,每个段都有一个段名。在取段名 时,要取一个具有一定含义的段名。段定义的一般格式如下: 段名 SEGMENT [对齐类型] [组合类型] [类别] … ;段内的具体内容 段名 ENDS

微机原理接口技术04_汇编语言程序设计

微机原理接口技术04_汇编语言程序设计

4.1.2 汇编语言程序格式
;设置DS寄存器为当前数据段 设置DS寄存器为当前数据段 设置DS MOV MOV MOV MOV AX,DATA_SEG1 AX, DS,AX DS, AX, AX,DATA_SEG2 ES, ES,AX ;代码段定义结束 START ;源程序结束 ;将附加数据段地址赋予ES 将附加数据段地址赋予ES ;将数据段地址赋予DS 将数据段地址赋予DS
4.1.2 汇编语言程序格式
START: MOV AX, DATA MOV DS, AX MOV AX, VAR1 SUB AX, VAR2 MOV RESULT, AX MOV AH, 4CH INT 21H CODE ENDS END START ;初始化数据段寄存器 初始化数据段寄存器DS 初始化数据段寄存器 ;变量 变量VAR1送AX 变量 送 ;AX-VAR2结果送 结果送AX 结果送 ;结果送变量 结果送变量RESULT 结果送变量 ;调用 调用4CH号DOS中断 调用 号 中断 ;返回操作系统 返回操作系统 ;代码段结束 代码段结束 ;汇编结束 汇编结束
4.2.1 常量
(2)等号伪指令 ) 格式:符号名= 格式:符号名=表达式 功能:将表达式的值赋给符号名。 功能:将表达式的值赋给符号名。 MATH=20H ENG=3 ENG=MATH+ENG+10H 等号语句与EQU语句有同样的功能,区别在于在 语句有同样的功能, 等号语句与 语句有同样的功能 同一源程序中,EQU语句不允许对符号重复定义,而 同一源程序中, 语句不允许对符号重复定义, 语句不允许对符号重复定义 等号语句允许对符号重复定义。 等号语句允许对符号重复定义。
4.1.2 汇编语言程序格式
相减, 【例】将变量VAR1和VAR2相减,并将结果送入变量 将变量 和 相减 并将结果送入变量RESULT。 。 DATA SEGMENT ;定义数据段 定义数据段 VAR1 DW 7654H ;定义变量 定义变量VAR1初值为 初值为7654H 定义变量 初值为 VAR2 DW 2345H ;定义变量 定义变量VAR2初值为 初值为2345H 定义变量 初值为 RESULT DW ? ;定义变量 定义变量RESULT 定义变量 DATA ENDS ;数据段结束 数据段结束 CODE SEGMENT ;定义代码段 定义代码段 ASSUME CS: CODE , DS: DATA ;为各个逻辑段指定段寄存器 为各个逻辑段指定段寄存器

微机原理与接口技术 ch4程序设计

微机原理与接口技术 ch4程序设计

微机原理及应用——第一章 微型计算机基础知识
13
4.1.4 常量、变量、标号、表达式 常量、变量、标号、
1、常数 、
指令中出现的那些固定值, 指令中出现的那些固定值,分为数值常数和字符 串常数。 串常数。 数值常数分为: 数值常数分为: 二进制数 八进制数( ) 八进制数(B) 十进制数 (Q) 十六进制数 (H) 字符串常数是用单引号‘’括起来的一串字符。 ‘’括起来的一串字符 字符串常数是用单引号‘’括起来的一串字符。
微机原理及应用——第一章 微型计算机基础知识
18
4.1.4 常量、变量、标号、表达式 常量、变量、标号、
(2)、合成运算符(属性运算符) 、合成运算符(属性运算符)
① PTR:规定存储单元的类型。 类型 PTR 表达式 类型有:BYTE、WORD、DWORD、NEAR、 FAR。 ② THIS:类型指定运算符 例:XYZ EQU THIS BYTE;把字节类型BYTE 属性赋予变量XYZ。
例:MOV BX,PORT LT 5; , ; MOV BX,(( ,((PORT LT 5) AND 20) OR ,(( ) ) ((PORT GE 5) AND 30) (( ) ) 小于5时 当PORT 小于 时,上述指令等效于 MOV BX,20; , ; 大于或等于5时 当PORT 大于或等于 时,上述指令等效于 MOV BX,30; , ;
微机原理及应用——第一章 微型计算机基础知识
19
4.1.4 常量、变量、标号、表达式 常量、变量、标号、
③算术运算符 +、-、*、/、MOD
④ 逻辑运算符
AND、OR、NOT、XOR
微机原理及应用——第一章 微型计算机基础知识
20

微机原理与接口技术汇编语言程序设计

微机原理与接口技术汇编语言程序设计

⑴汇编语言是机器语言的符号表示语言,因此,程序设 计人员可以充分利用机器硬件的全部功能,发挥机器的 长处。
⑵现在的微机系统中,底层的一些功能仍然靠 汇编语言程序来实现。例如机器的自检、系统初始化、 实际的输入输出操作,至今仍然是用汇编语言编制的 程序来完成。 ⑶汇编语言程序的效率通常高于高级语言程序。 所以在节省内存空间和提高程序运行速度的重要场合, 如实时控制,常常使用汇编语言来编制的。 鉴于以上理由,现在许多高级语言都设置有与 汇编语言程序接口的功能,以便于提高高级语言程序 的效率。
§4.3伪指令(伪操作)
伪指令是一种说明性语句,它本身不产生对应的机
器目标代码,它仅仅是告诉汇编程序,对后面的指令语 句和伪指令语句的操作数应该如何产生机器目标代码, 每条伪指令共分四边个字段:
伪致可以分为以下几类:
一、数据定义伪指令
[变量名] DB DW DD 操作数
变量也有三种属性:段、偏移量和类型。 ① 变量的段属性是变量所代表的数据区所在段的段
地址。由于数据区一般在存储器的数据段中,因此变
量的段地址常常在DS和ES寄存器中。 ② 变量的偏移量属性是该变量所在段的起始地址与 变量的地址之间的字节数。 ③ 变 量 的 类 型 属 性 有 BYTE( 字 节 ) 、 WORD
四、段定义伪指令 SEGMENT
段名 SEGMENT [定位类型][组合类型][‘类别名’] …... 段名 ENDS
段名:是逻辑段的标识符,不可缺省,表示逻辑段在存储器中
的地址, SEGMENT 和ENDS前的段名相同。
定位类型:
BYTE 表示该段起始地址可以在存储单元的任何字节地址; WORD 表示该段起始地址必须是偶数即地址末1位为0 ; PARA 表示该段起始地址在节的边界整数上,每16存储单元 为1节即地址末4位为0,定位类型缺省则默认为PARA ; PAGE 表示该段起始地址在页首,每256存储单元为1页即地 址末8位为0 。

微机原理与接口技术 第4章 汇编语言程序设计

微机原理与接口技术  第4章 汇编语言程序设计

5
系统功能调用入口 (同INT 21H)
4
程序终止处理程序地 址(INT 22H)
CTRL_BREAK中 断
4
出 口 地 址 ( INT
•SP指向程序尾部,栈长度256字 节。
+12H
23H)
4
标准错误出口地址 (INT 24H)
+16H
22
保留
+2CH
48
DOS专 用 ( 前 两 个 字 节环境块段地址)
PUSH DS
-D 159B:0 0F
159B:0000 48 65 6C 6C 6F 20 57 6F-72 6C 64 21 0A 0D 24 00 Hello World!..$.
-U 159C:0 4
159C:0000 1E
PUSH DS
159C:0001 33C0
XOR AX, AX
159C:0003 50
1、定位类型
指明内存中以何种类型的边界开始该段
PAGE
段起始地址的最低8数必须为0
PARA(默认) 段起始地址的最低4位必须为0
WORD
该段必须从字的边界开始,地址必须为偶数
BYTE
从任何地址开始
2、连接方式
本段与其它段的关系
NONE(默认)本段与其它段逻辑上无关,每段都有自己的基地址
PUBLIC
与其他同名同‘类别’的段连接在一起,使用一个共同的基地址
4.2 汇编语言源程序的结构
4.2.1 汇编语言的语句格式 两类汇编语言语句: 1、执行性语句(一般性执行性语言和宏指令),产生机器
指令代码
[标号:] 指令助记符 [操作数] [;注释] • 标号代表该行指令的起始地址 • 注释可以省略

《微型计算机原理与接口技术》第4章 汇编语言程序设计2伪指令、功

《微型计算机原理与接口技术》第4章 汇编语言程序设计2伪指令、功

1. DOS键盘功能调用
(1) 从键盘输入一个字符(功能号=1有回显、7、8 无回显) MOV AH,1 INT 21H <AL中有键入的字符>
10
例:程序中有时需要用户对提示做出应答。
GET_KEY: MOV INT CMP JZ CMP JZ JMP YES: … … NO: … AH,1 21H AL,’Y’ YES AL,’N’ NO GET_KEY ;等待键入字符 ;结果在AL中 ;是’Y’? ;是,转YES ;是’N’? ;是,转NO ;否则继续等待输入
汇编语言上机过程:
开始 输入(修改)源程序 汇编 Y
有错 ?
用EDIT,NOTEPAD等任何文本编辑 器。源程序存为.ASM文件 用MASM宏汇编程序进行汇编。 汇编后生成.OBJ目标文件。 命令格式:MASM <源文件名.ASM>; 用LINK连接程序进行连接。 连接后生成.EXE可执行文件。 命令格式:LINK <目标文件名.OBJ>;
MOV AH,<功能号> <设置入口参数,一般将参数放在寄存器中> INT <中断类型>
3
BIOS中的几个主要中断类型如下: INT 10H——屏幕显示 INT 13H——磁盘操作 INT 14H——串行口操作 INT 16H——键盘操作 INT 17H——打印机操作 每类中断由包含许多子功能,调用时通过功 能号指定。 BIOS功能调用说明见附录E。
8
为了便于使用这些子功能,INT 21H对每个子功能 都进行了编号——功能号,用户通过指定的功能号来调 用不同子功能。
D0S系统功能调用的使用方法:
① AH←功能号; ② 设置该功能所要求的其他入口参数; ③ 执行INT 21H指令; 分析出口参数。

微机原理与接口技术第2版第04章8086汇编语言程序设计

微机原理与接口技术第2版第04章8086汇编语言程序设计
微机原理与接口技术第2版第04章8086汇编语言程序设计
几个概念
汇编语言 汇编语言源程序 汇编 汇编程序
2、等号语句 格式: NUM=34 …… NUM=34+1
二、变量定义语句
格式: 符号名 DB/DW/DD 表达式
1、定义一组数据
例1: BUFF DW 1234H, 0ABCDH, 8EH DW –79DH, 7B6AH
2、逻辑运算符
AND、OR、XOR、NOT
3、关系运算符
EQ(相等)、NE(不等、) LT(小于)、GT(大于)、 LE(小于等于)、GE(大于等于)。 关系成立,全1 关系不成立,全0
例: MOV DL , 10H LT 16
MOV DL,0 例: AND AX , 555 GT 222 AND AX,0FFFFH
二、汇编语言程序的基本结构
1、顺序结构
举例
把al内容除2,并四舍五入 完成
x1*x2x3 x1:byte x2:word x3 34bit
2、分支结构
举例
实现
1 x 0
y
0
x0
1 x 0
用查表法确定分支 a、对8种产品进行编号0,1,……7 b、每一个编号对应一个入口地址 proc0,proc1,……proc7 步骤: a、把入口地址放在Table开始的内存单元; b、根据key内容进行查表实现分支转移
START: MOV AX , DATA
;初始化DS
MOV DS , AX
……
MOV AX , 4C00H ;返回DOS
INT 21H CODE ENDS
END START
;代码段结束 ;源程序结束
;段属性说明
特点 程序分段 语句由指令性和指示性语句组成 两种程序框架

微型计算机原理与接口技术(4)

微型计算机原理与接口技术(4)
格式1:变量名 助记符 操作数,操作数… ;注释
格式2:变量名 助记符 n DUP(操作数,操作数…) ;注释
功能:将操作数存入变量名指定的存储单元中,或者只分配存储空间不存入数 据。
变量名——它用符号表示,可以省略,作用与指令语句中的标号相同,但后面不 跟冒号。汇编程序汇编时将此变量的助记符后的第一个字节的偏移地址作为它的 符号地址。 助记符——所用伪指令助记符主要有:
MUL D2 MOV BX,OFFSET P1 MOV [BX],AX MOV [BX+2],DX RET MAIN ENDP CODE ENDS END START 四、过程定义语句
指令助记符是该语句的指令名称的代表符号,它指出指令的操作类型,汇编 程序将其翻译成机器指令。它是语句中的关键字,因此不可省略。
操作数表示参加本指令运算的数据,根据指令要求可以有一个或多个操作数, 有的指令不需要操作数,多个操作数之间用逗号“,”隔开,操作数与指令助记符 之间用空格隔开。操作数可以是常数、变量、标号、寄存器名或表达式。
三、段定义语句
1. 段定义语句SEGMENT…ENDS 格式: 段名 SEGMENT 定位类型 组合类型 ‘分类名’
逻辑段内容
段名 ENDS
功能:将一个逻辑段定义成一个整体。
段定义语句中的参数设置,可以增强伪指令语句的功能。段定义语句允许嵌 套设置,即一个逻辑段内再设置其它逻辑段,但不允许各个逻辑段相互交叉设 置。
DW 100 DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR START:MOV AX,STACK
MOV SS,AX PUSH DS SUB AX,AX PUSH AX

微机原理与接口技术_04汇编语言程序基础讲解

微机原理与接口技术_04汇编语言程序基础讲解

2019/7/25
27
• 2.ORG伪指令
– 格式:ORG 〈表达式〉
– 功能:该指令后生成的目标代码,从表达式提供的偏移地址 开始存放。
• 3.GROUP伪指令
– 格式:〈组名〉 GROUP 〈段名1,段名2,…〉 – GROUP是群或组的意思,用来把模块中若干不同名的段集
合成一个组,并赋予一个组名,使它们都装在同一个逻辑段 中(64K)。组内各段名间的跳转都可以看作是段内跳转。 组名和段名一样,它表示该组的段地址。
– 5)SIZE运算符
– 取数组变量总字节数运算符,该运算符返回数组变量所占的总字 节数,相当于LENGTH和TYPE两个运算符返回值的乘积。
2019/7/25
16
• 5.分离运算符
– 1)LOW运算符 – 取地址表达式或16位绝对值低8位。 – 2)HIGH运算符 – 取地址表达式或16位绝对值高8位。 – 3)SHORT运算符 – 当转移指令的目标地址与该指令之间的距离在-128~127字节范
29
4.3.5 模块定义与通信伪指令
2019/7/25
9
4.2.3 汇编语言中的表达式
• 表达式由操作数和运算符组成,在汇编时一个表达式得到 一个值。表达式分为数值表达式和地址表达式。
– 1.表达式中的常量 – 常量是在汇编时已经确定的常数值,常量可以是数据和字符。常
量表示一个固定的数值,它又分成多种形式。 – (1)常数:指由10、16、2和8进制形式表达的数值。 – (2)字符串:字符串常量是用单引号或双引号括起来的单个字
围内时,可用SHORT运算符进行说明,以保证汇编程序能为该指 令生成最短的机器码,从而提高运行效率。
2019/7/25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

③ 近程间接转移
把转移的目的地址先存放在某个寄存器或存储器单元中,通过
这个寄存器或存储单元实现转移。
JMP CX
;寄存器间接转移,可使用任何一个通用寄存器
JMP WORD PTR[BX] ;存储器间接转移,目的地址在存储单元中
已在数据段定义存储器单元“TARGET” : TAEGET DW ONE 下面四组指令都可以实现向标号“ONE”的转移:
对于无符号数: CF=0,目的操作数≥源操作数 CF= 1, 目的操作数<源操作数
假设存储器变量(X)= 80H,指令“CMP X, 5”执行后:
ZF=0 OF=0 ( X )≠ 5 减法操作没有产生溢出,SF是正确的结果符号位
SF=1
如果X中存放的是有符号数,X<5
(由于OF=0,所以符号标志SF有效/正确)
1)JMP ONE ;近程直接转移
2)LEA DX, ONE
JMP DX 3)LEA BX, TARGET JMP WORD PTR[BX] 4)JMP TARGET ;存储器间接段内转移 ;存储器间接段内转移 ;寄存器间接段内转移
(2)远程无条件转移指令
远程无条件转移指令可以实现不同的段之间的转移,执行该 指令时,CPU把目的段的段基址装入CS,目的位置的段内偏 移地址装入IP。有直接寻址和间接寻址两种格式。 ① 远程直接转移
指令“JMP SHORT TWO”汇编后产生的机器指令为 “EB0A”。 “EB”是这种类型转移指令的“操作码”,“0A”是目的位置离开出 发点的距离,10CH-102H=0AH。 由于用一个字节补码表示目的地址与当前地址的距离,所以转移 范围为下一条指令地址-128 ~ +127字节以内。
② 近程直接转移 JMP 目的位置标号
100H: 103H: …… 0F000H: 0F003H:
ONE:
JMP ……
TWO
ONE
TWO:JMP ……
指令“JMP TWO”汇编后得到的机器指令代码为“E9FDEE”。 “E9”为操作码 “0EEFDH”为位移量,0EEFDH=0F000H-103H。 指令“JMP ONE”对应的机器指令代码为“E90011” “E9”为操作码 位移量“1100H”,0F003H+1100H=0103H(舍去进位) 使用近程直接转移指令可以实现同一个段内64KB范围的转移。
ONE:
MOV
INT INC
AH, 2
21H DL ;输出DL中的字符 ;修改DL中的字符代码
JMP
MOV INT
ONE
AX, 4C00H 21H START
;转移到“ONE”处继续执行
CODE
ENDS
END
(1)近程无条件转移指令 如果转移的目的位置与出发点在同一个段里,这样的转移 称为“近程”转移或者“段内”转移。实现“近程”转移,
CF=0
如果X中存放的是无符号数,X>5 (由于ZF=0,所以不相等)
(2)TEST(Test,测试)指令
第4章
4.1 4.2 4.3 4.4 4.5 4.6
汇编语言程序设计
选择结构程序 循环结构程序 字符串处理 子程序 宏指令 BIOS和DOS功能调用
按照指令执行的顺序,程序的结构可以划分成以下三种。 • 顺序结构 :程序按照它编写的顺序执行,每条指令只执行一 次,这样的程序称为“顺序结构”的程序。 • 循环结构:一组指令被反复地执行,这样的程序称为“循环结 构”或者“重复结构”的程序。
• 选择结构 :根据某个条件,一部分指令被执行,另一部分指 令没有被执行,这样的程序称为“选择结构”或者 “分支结构”的程序。 一个实际运行的程序,常常是由以上三种结构的程序组合而成 的,上面的三种结构称为程序的“基本结构”。使用这三种基本 结构,可以编写出任何所需要的程序。
4.1 选择结构程序
4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 测试和转移控制指令 基本选择结构 单分支选择结构 复合选择结构 多分支选择结构
功能:目的操作数-源操作数,保留运算产生的标志位,不保留
运算的差。用来比较两个有符号数或无符号数的大小。
对于有符号数: OF=0时,SF为正确的结果符号 OF=1时,SF与正确的符号位相反 OF⊕SF的运算结果反映了正确的结果符号 OF⊕SF= 0, 目的操作数≥源操作数 OF⊕SF= 1, 目的操作数<源操作数
JMP
FAR PTR 远程标号
指令汇编后,对应的机器指令为5个字节: • • • 1个字节操作码“0EAH” 2个字节目的地址的段内偏移地址 2个字节目的标号所在段的段基址
② 远程间接转移 远程转移需要32位的目的地址,使用间接转移时,需要把 32位 目的地址事先装入用“DD”定义的存储单元。 假设已在数据段定义存储器单元“FAR_TGT”如下: FAR_TGT DD TWO 下面三组指令都可以实现向远程标号“TWO”的转移:
4.1.1 测试和转移控制指令
1. 无条件转移指令
2. 比较和测试指令
3. 条件转移指令
1. 无条件转移指令
无条件转移指令的一般格式:
JMP
目的位置
执行JMP指令后,程序转移到新的“目的位置”执行。
[例4-1] 用JMP指令实现转移
CODE START: MOV SEGMENT ASSUME CS: CODE DL, 20H
1)JMP FAR PTR TWO ;远程直接转移
2)LEA BX, FAR_TGT
JMP DWORD PTR[BX] 3)JMP FAR_TGT ;远程间接转移 ;远程间接转移
2. 比较和测试指令
(1)CMP(Compare, 比较)指令
指令格式: CMP 目的操作数,源操作数
目的操作数:8位/16位的寄存器/存储器操作数。 源操作数:与目的操作数同类型的寄存器/存储器/立即数。
实质上是把目标位置的“偏移地址”置入IP寄存器。
按照寻址方式的不同,近程无条件转移指令有三种格式。

短转移 如果目的位置离开出发点很近,可以使用以下格式: JMP SHORT LABEL 其中“LABEL”是目的位置的标号。这种格式产生的机器指令代 码最短,为2字节。
100H: JMP 102H: …… …… 10CH: TWO: …… SHORT TWO
相关文档
最新文档