现代微型计算机原理与接口技术第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
  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
相关文档
最新文档