汇编语言程序设计例子

上传人:油条 文档编号:20626101 上传时间:2017-09-11 格式:PDF 页数:23 大小:161.72KB
返回 下载 相关 举报
汇编语言程序设计例子_第1页
第1页 / 共23页
汇编语言程序设计例子_第2页
第2页 / 共23页
汇编语言程序设计例子_第3页
第3页 / 共23页
汇编语言程序设计例子_第4页
第4页 / 共23页
汇编语言程序设计例子_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《汇编语言程序设计例子》由会员分享,可在线阅读,更多相关《汇编语言程序设计例子(23页珍藏版)》请在金锄头文库上搜索。

1、 1 I 1 顺序程序的结构形式 顺序结构也称为线形结构和直线结构其特点是其中的语句或结构被连续执行。顺序结构的程序流程图如图 4 . 9 所示。 图 4 . 9 顺序结构的程序流程图 由图 4 . 9 可知顺序结构的程序只有一个起始框1 n 个执行框和一个结束框。S 1 , S 2 , , S n 可以由单条指令或一个程序段组成。C P U 执行顺序程序时将程序中的指令一条条地顺序执行无分支、循环和转移。这种结构最常见也最简单只要遵照算法步骤依次写出相应的指令即可。 在进行顺序结构程序设计时主要考虑如何选择简单有效的算法如何选择存储单元和寄存器。 2 顺序程序设计 【例 4 . 2 8 】在

2、内存 A D D R 开始的两个字单元中存放着两个字数据完成这两个字数据的相加并将相加的 和设仍为一个字数据存放于内存 R E S U L T 开始的存储单元中。 解题思路先从第一个字单元中将第一个字数据取出来送入累加器然后将累加器中的内容与第二个字单元中的数据相加最后将相加结果和再从累加器中存入内存中存放结果的单元中。其程序流程如图 4 . 1 0 所示。 图 4 . 1 0 例 4 . 2 8 程序流程图 程序如下 D A T A S E G M E N T A D D R D W X 1 , X 2 R E S U L T D W D A T A E N D S C O D E S E

3、G M E N T A S S U M E C S : C O D E , D S : D A T A 例 4 . 2 8 完整程序 S T A R T : M O V A X , D A T A M O V D S , A X M O V A X , A D D R A D D A X , A D D R + 2 2 M O V R E S U L T , A X M O V A H , 4 C H I N T 2 1 H C O D E E N D S E N D S T A R T 当 X 1 = 1 C 8 4 H , Y = 2 F 5 B H 时运行结果为 X 1 = 1 C 8

4、4 H , X 2 = 2 F 5 B H R E S U L T S = 4 B D F H 【例 4 . 2 9 】内存中自 R S S A 开始的 1 1 个单元中连续存放着 0 1 0 的平方值称为平方表。任给一个数 x0 x 1 0 存放在 R S 1 单元中查表求 x 的平方值并将结果存放于 R S 2 单元中。 解题思路编制此类查表程序关键是要找到表的起始地址和要查的结果所在地址的关系即找到表的存放规律。因为 0 1 0 平方表的存放次序是顺序的所以表首址为 0 地址为 R S S A 即 0 2 存放在 R S S A + 0 单元1 2 存放在 R S S A + 1 单元可

5、知表的起始地址与数 x 的和便是 x 的平方值在表中存放的单元地址。程序流程如图 4 . 1 1 所示。 图 4 . 1 1 例 4 . 2 9 程序流程图 程序如下。 D A T A S E G M E N T R S S A D B 0 , 1 , 4 , 9 , 1 6 , 2 5 , 3 6 , 4 9 D B 6 4 , 8 1 , 1 0 0 R S 1 D B R S 2 D B D A T A E N D S C O D E S E G M E N T A S S U M E C S : C O D E , D S : D A T A 例 4 . 2 9 完整程序 例 4 .

6、2 9 运行结果 S T A R T : M O V A X , D A T A M O V D S , A X M O V B X , O F F S E T R S S A ; 取 R S S A 的偏移地址 M O V A H , 0 ; A H 0 M O V A L , R S 1 ; A L X A D D B X , A X ; B X A X + X 3 M O V A L , B X ; 取出 X 的平方值送入 A L 中 M O V R S 2 , A L ; X 的平方值存入 R S 2 单元 M O V A H , 4 C H I N T 2 1 H C O D E E

7、 N D S E N D S T A R T 若需要查 6 的平方可将数据段中 R S 1 定义为 6 则运行结果为 R S 1 = 6 R S 2 = 3 6 I I 分支程序设计 分支程序设计要领如下。 首先根据处理的问题用比较、测试、算术运算、逻辑运算等方式使标志寄存器产生相应的标志位。例如比较两个单元地址的高低、两个数的大小测试某个数据是正还是负测试数据的某位是“0 ”还是“1 ”等将处理的结果反映在标志寄存器的 C F , Z F , S F , D F 和 O F 位上。 根据转移条件选择适当的转移指令。通常一条条件转移指令只能产生两路分支因此要产生 n 路分支需 n 1 条条件转

8、移指令。 各分支之间不能产生干扰如果产生干扰可用无条件转移语句进行隔离。 【例 4 . 3 0 】在以 A D D R 为首地址的内存单元中存放着两个字节类型的无符号数x 1 和 x 2 比较这两个数的大 小并将大数存放在内存 R E S U L T 单元中。 解题思路比较两个无符号数的大小可用 C M P 指令进行并利用借位标志C F 来判断大小。程序流程如图 4 . 1 4 所示。 图 4 . 1 4 例 4 . 3 0 程序流程图 程序如下。 D A T A S E G M E N T A D D R D B X 1 , X 2 R E S U L T D B 4 D A T A E N

9、 D S C O D E S E G M E N T A S S U M E C S : C O D E , D S : D A T A S T A R T : M O V A X , D A T A M O V D S , A X M O V A L , A D D R ; A X X 1 C M P A L , A D D R + 1 ; X 1 - X 2 J N C L O O P 1 ; 若 X 1 X 2 L O O P 1 M O V A L , A D D R + 1 ; 若 X 1 X 2 , A L X 2 L O O P 1 : M O V R E S U L T , A

10、 L ; 将大数存入 R E S U L T 单元中 M O V A H , 4 C H I N T 2 1 H C O D E E N D S E N D S T A R T 若 X 1 0 F F H , X 2 3 B H 则运行结果为 X 1 = 0 F F H , X 2 = 3 B H R E S U L T : F F H 若要找出两数中的最小数时可修改 J N C L O O P 1 为 J C L O O P 1 。例 4 . 3 0 是一个双分支结构的程序程序中选择了标志位 C F 作为判断转移的条件满足条件时转移到标号 L O O P 1 去执行而不满足条件时就顺序执行后

11、面的程序。 假设任意给定 x 值存放在内存 R S 1 单元中求出函数 y 的值存放在内存R S 2 单元中。程序流程如图 4 . 1 5 所示。 图 4 . 1 5 例 4 . 3 1 程序流程图 程序如下。 D A T A S E G M E N T 5 R S 1 D B X ; 存放自变量 X R S 2 D B ; 函数 Y 值的存储单元 D A T A E N D S C O D E S E G M E N T A S S U M E C S : C O D E , D S : D A T A S T A R T : M O V A X , D A T A M O V D S ,

12、A X M O V A L , R S 1 ; A L X C M P A L , 0 ; 将 X 与 0 比较 J G E B I G ; 若 X 0 B I G M O V R S 2 , 0 F F H ; 若 X 0 , ( R S 2 ) - 1 补0 F F H J M P D O N E B I G : J E E Q U L ; 若 X 0 E Q U L M O V R S 2 , 1 ; 若 X 0 , ( R S 2 ) 1 J M P D O N E E Q U L : M O V R S 2 , 0 ; 若 X 0 , ( R S 2 ) 0 D O N E : M

13、O V A H , 4 C H I N T 2 1 H C O D E E N D S E N D S T A R T 若将 R S 1 定义为 9 0 H 则运行结果为 R S 1 = 9 0 H R S 2 = F F H 这是一个三分支结构的程序根据 x 的不同取值程序分为三个分支分别处理 x 0 x 0 x 0 的三种情况。由程序中可看出三个分支使用了3 1 条条件转移指令。 【例 4 . 3 2 】 设有一组8 个选择项存于 A L 寄存器中试根据 A L 中哪一位为“1 ”把程序分别转移到相应的 分支去执行。 解题思路根据题意可使用跳转表法使程序根据不同的条件转移到多个程序分支去。

14、首先将 8 个选择项所对应的 8 个分支程序的标号首地址存放在一个数字表即跳转表中然后采用移位指令将 A L 中的内容逐位移出到 C F 标志位中并判断 C F 是否为“1 ”。若 C F 为“1 ”就根据分支程序标号在跳转表中的存放地址将程序转入相应分支若 C F 为“0 ”则继续判断下一个选择项是否为“1 ”。这是一个典型的多分支选择即 C A S E 程序结构程序流程如图4 . 1 6 所示。 6 图 4 . 1 6 例 4 . 3 2 程序流程图 程序如下。 D S E G S E G M E N T T A B D W R O U T I N E 1 ; 定义地址表跳转表 D W R O U T I N E 2 D W R O U T I N E 3 D W R O U T I N E 4 D W R O U T I N E 5 D W R O U T I N E 6 D W R O U T I N E 7 D W R O U T I N E 8 D S E G

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号