当前位置:文档之家› 第4章-汇编语言程序设计2

第4章-汇编语言程序设计2


程序:ORG
MOV ANL ADD MOV MOV
2000H A,30H A,#0FH A,#30H 32H,A A,30H
SWAP ANL ADD MOV SJMP END
A A,#0FH A,#30H 31H,A
$
4.2 -51汇编语言程序设计
顺序结构程序设计
例4-2:将60H单元中的8位无符号数转换成三位码,并 存放在(百位)、(十位)和(个位)三个单元中
程序:
ORG 2000H
BAIW DATA 40H
SHIW DATA 41H
GEW DATA 42H MOV A,60H MOV B,#100
DIV MOV MOV MOV
AB BAIW,A A,B B,#10
DIV AB
MOV
MOV
SJMP
;取数 ;除数为100
END
;确定百位数,位于A中
;存百位数
设计要点: 先建立可供条件转移指令测试的条件 选用合适的条件转移指令,如: ,,,等,,,,等 在转移的目的地址处设定标号
4.2 -51汇编语言程序设计
分支结构程序设计
例10-25:求单字节有符号二进制数的补码
程序: :$
2000H .7, C,.7 00H,C
A A,#1 C,00H .7,C
;(A)>0,不需转换 ;保存符号CLR MOV MOV MOV ADD MOV
C R0,30H R1,33H A,@R0 A,@R1 @R0,A
INC R0
INC R1 MOV A,@R0 ADDC A,@R1
MOV @R0,A INC R0 INC R1 MOV A,@R0 ADDC A,@R1 MOV @R0,A MOV 20H,C END
伪指令
机器指令
特点:伪指令是由汇编程序识别,并完成相应的功能
功能:在汇编过程中对数据的存储环境或汇编实施一定 的控制,如:伪指令给程序分配一定的存储区、定义 符号、指定暂存数据的区等
4.1 汇编语言程序设计基础
汇编语言
(赋值)伪指令:
格式: 字符名 表达式
功能:将右边“表达式”的值赋给左边的“字符名” 注意:这里的表达式允许是一个数据或地址,也可以是
指令中、16、11常用标号地址表示 指令中操作数可带加、减运算符的表达式
“$”符号表示该转移指令机器码所在的首地址 标号以字母开头、不超过8个字符,不允许使用保留字、
寄存器名及伪指令字符
4.1 汇编语言程序设计基础
汇编语言
伪指令:

标 号 : 指 伪令 指助 令记 符 操 作 数 ; 注 释
一一对应
第4章 汇编语言程序设计
4.1 汇编语言程序设计基础
汇编语言
§4.1 汇编语言程序设计基础
1. 汇编语言
汇编语言 源程序
汇编 汇编程序
目标程序
4.1 汇编语言程序设计基础
指令:

汇编语言
标 号 : 指 令 助 记 符 操 作 数 ; 注 释
注意:
立即数前加“#”,后面带“B”、“D”、“H”分别表示 “二进制”、 “十进制”、“十六进制”
;余数送A
;除数为10
;确定十位数和个位数
SHIW,A GEW,B $
4.2 -51汇编语言程序设计
顺序结构程序设计
例4-3:将两个三字节无符号数相加,其中一个加数在内部的32H、 31H和30H单元;另一个加数在内部的35H、34H和33H单元,要求 相加后的和存入32H、31H和30H单元,进位存入位寻址区的20H单 元中
;恢复符号位
4.2 -51汇编语言程序设计
分支结构程序设计
例10-26:已知单元中有一自变量X,请按如下条件编出 求函数值Z并将它存入单元的程序
1 方法一:先分支后赋值 Z= 0
-1
A←X
X>0 X=0 X<0
方法二:先赋值后分支
A←X
Y A=0?
N Y
A>0?
N A←-1
A←1
Y A=0? N R1←-1
X2 6

X2 K1
×
4.2 -51汇编语言程序设计
顺序结构程序设计
§4.2 -51汇编语言程序设计
1. 顺序结构程序设计
特点:执行程序的方式是“从头到尾”逐条执行指令语 句,直至程序结束
例4-1: 拆字程序。 将30H单元内的两位码拆开 并转换成码,将转换后的码放在31H和32H单 元,并让低位码放在32H单元
;存低位字节补码 ;取高位字节送A ;去反 ;加进位
;存高位字节补码
4.2 -51汇编语言程序设计
分支结构程序设计
2. 分支结构程序设计
利用条件转移指令,使程序执行到某一指令后,根据 条件(即上面运算的情况)是否满足,改变程序执行 的次序
特点:先用比较指令或数据操作及位测指令等改变标志 寄存器各个标志位,然后用条件转移指令进行分支
N A>0? Y R1←1
存数
存数
4.2 -51汇编语言程序设计 方法一:先分支后赋值
分支结构程序设计
A←X
4.2 -51汇编语言程序设计
顺序结构程序设计
例10-24:16位数求补。已知16位二进制数在R1、R0中, 将此16位二进制数求补,求补结果存入内部 31H、30H 单元
程序:
2000H
C A,R0
A A,#01H 30H,A A,R1
A A,#00H 31H,A
;取低位字节送入A ;求反 ;加1
(位地址赋值)伪指令:
汇编语言
格式:字符名 位地址
功能:将位地址赋予前面的字符名,经赋值后可用该字 符名代替后面的位地址
注意:
被定义后,“字符名”是一个符号位地址
有些汇编程序不允许使用伪指令,用户只能用伪指令定 义位地址变量,但是用这种方式定义时,语句右边只 能是实际的物理地址,而不能使符号位地址
如: K1 20H K1
定的起点(偏移地址)开始连续存放,直至遇到新的 指令。表达式值是一个无符号数
(结束汇编)伪指令 :
格式: 功能:结束汇编语言源程序的标志 用途:常用于汇编语言源程序末尾,表示汇编结束
注意:一个源程序只能有一个命令,且置于程序的最后。 在以后所写的指令,汇编程序都不予处理
4.1 汇编语言程序设计基础
包含被定义的“字符名”在内的表达式,但不能是汇 编符号,如R0~R7等
伪指令与伪指令的区别: 定义的字符名必须“先定义后使用”,而定义的“字符
名”没有这种限制 伪指令可放在程序的任何位置,比伪指令灵活
4.1 汇编语言程序设计基础
汇编语言
(起始汇编)伪指令 :
格式: <表达式> 功能:把以下语句定义的内存数据或程序,从表达式指
相关主题