基本汇编语言程序设计

上传人:ji****72 文档编号:50947498 上传时间:2018-08-11 格式:PPT 页数:97 大小:331KB
返回 下载 相关 举报
基本汇编语言程序设计_第1页
第1页 / 共97页
基本汇编语言程序设计_第2页
第2页 / 共97页
基本汇编语言程序设计_第3页
第3页 / 共97页
基本汇编语言程序设计_第4页
第4页 / 共97页
基本汇编语言程序设计_第5页
第5页 / 共97页
点击查看更多>>
资源描述

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

1、第 四 章 基 本 汇 编 语 言 程 序 设 计封面 1 1第 四 章 基 本 汇 编 语 言 程 序 设 计第四章基本汇编语言程序设计第四章 基本汇编语言程序设计 4.1 顺序程序设计 4.2 分支程序设计 4.3 循环程序设计 4.4 子程序设计 4.4.1 过程定义伪指令 4.4.2 子程序的参数传递 4.4.3 子程序的嵌套、递归与重入 4.4.4 子程序的应用本章要点及习题分析2 2第 四 章 基 本 汇 编 语 言 程 序 设 计4.1顺序程序设计(e)4.1 顺序程序设计指令按程序中的书写顺序逐条执行,称为顺序程序。除非编程解决非常简单的问题,顺序程序并不多见,但是顺序程序往往

2、是复杂程序结构的一部分,如分支结构的一个分支,循环结构的循环体等。返回第四章3 3第 四 章 基 本 汇 编 语 言 程 序 设 计例4.1例4.1:设有3个字变量x,y和z,求出三者之和,结果 存入字变量w。 .model small .startup .stack mov ax,x .data add ax,y Xdw 5 add ax,z Ydw 6 mov w,ax Zdw 7 .exit 0 Wdw ? end .code4 4第 四 章 基 本 汇 编 语 言 程 序 设 计例4.2/1例4.2 设有一个64位数据,将它整个左移8位。12 34 56 78 87 65 43 210

3、0qvar0qvar1qvar2qvar3qvar4qvar5qvar6qvar75 5第 四 章 基 本 汇 编 语 言 程 序 设 计例4.2/2.model small.stack.data Qvar dq 1234567887654321h .code mov al,byte ptr qvar6 mov byte ptr qvar7,al mov al,byte ptr qvar5 mov byte ptr qvar6,al mov al,byte ptr qvar4 mov byte ptr qvar5,al mov al,byte ptr qvar3 mov byte ptr qv

4、ar4,al6 6第 四 章 基 本 汇 编 语 言 程 序 设 计例4.2/3mov al,byte ptr qvar2mov byte ptr qvar3,almov al,byte ptr qvar1mov byte ptr qvar2,almov al,byte ptr qvar0mov byte ptr qvar1,almov byte ptr qvar0,0 12 34 56 78 87 65 43 21h 34 56 78 87 65 43 21 00h(移位前)(移位后)返回第四章7 7第 四 章 基 本 汇 编 语 言 程 序 设 计4.2分支程序设计4.2 分支程序设计条件

5、转移指令Jcc和无条件转移指令JMP用于实现程序的分支结构,JMP不测试条件,Jcc可根据条件是否成立决定转移到指定位置或不转移而顺序执行后续指令。由于Jcc不支持条件表达式,而是以当前标志位的状态为条件,故Jcc之前一定要安排设置标志位的指令,如加减法、比较、测试等指令。基本分支类型分为单分支和双分支。8 8第 四 章 基 本 汇 编 语 言 程 序 设 计单分支1. 单分支类型对同一个问题,根据选择的条件不同,单分支结 构的流程图有两种画法,对应的程序也有两种编法。 如计算AX中的有符号数的绝对值。9 9第 四 章 基 本 汇 编 语 言 程 序 设 计单分支cmp ax,0jge non

6、egneg axNoneg: mov result,axcmp ax,0(教材有误) jnge yesnegjmp done yesneg: neg ax Done: mov result,axAX0 ?求补指令YN保存结果AX0?求补指令YN保存结果JMP1010第 四 章 基 本 汇 编 语 言 程 序 设 计双分支2.双分支程序两个分支都有语句 体,如何选择条件不重 要。流程图中分支体的 位置就是程序的实际顺 序,故分支语句体最 后一定要有一条 指令,跳过语句体, 转移到“后续操作”。条件成立?分支语句体2YN分支语句体1后 续 操 作 1111第 四 章 基 本 汇 编 语 言 程 序

7、 设 计双分支双分支举例:显示BX的最高位。 shl bx,1 jc one ;转分支体 mov dl,0 ;分支体1 jmp next;转后续操作 One: mov dl,1 ;分支体2 next: mov ah,2 ;后续操作 int 21h.分支程序的其他问题 有些双分支问题可以先假设一种情况,把双分 支改成单分支问题。如上例,先假设BX最高位为0, 在分支外准备显示0;如最高位为0,即可直接跳到后 续操作;如最高位为1才需要执行分支体。 mov dl,0shl bx,1jnc nextmov dl,1next:mov ah,2int 21h1212第 四 章 基 本 汇 编 语 言 程

8、 序 设 计多分支分支的嵌套形成多分支,嵌套形式多种多样。 例1:求符号函数 1 当 X0 Y= 0 当 X=0-1 当 X 8?ja start1and ax,000fh;将ASCII码转换成数字8080第 四 章 基 本 汇 编 语 言 程 序 设 计补充3/3dec axshl ax,1;等效于add ax,axmov bx,axjmp tablebx;(段内)间接转移:IPtable+bx start2:mov ah,9int 21h.exit 0disp1: mov dx,offset msg1 ;处理程序1jmp start2 Disp2: .end8181第 四 章 基 本 汇

9、编 语 言 程 序 设 计习题4.4 习题分析 4.4 编写一个程序,把从键盘输入的一个小写字母用 大写字母显示出来。框图:(省略输入字符的判断:简单的顺序程序)1号调用:输入字符ALAL-20H2号调用:显示字符结 束8282第 四 章 基 本 汇 编 语 言 程 序 设 计4.54.5 已知用于LED数码管显示的代码表为:LEDTABEL DB 0C0H,0F9H(共16项数据) 依次表示09,AF这16个数码的显示代码,编写一 个程序实现将lednum中的一个数字转换成对应的LED显 示代码。(查表程序)BX代码表首地址ALlednum执行指令XLATAL中即为所求的显示代码8383第

10、四 章 基 本 汇 编 语 言 程 序 设 计4.84.8 如果在例题4.4的tabel中依次添入msg1msg8,程 序应该如何修改?(Tabel dw msg1,.) mov bx,ax mov bx,axjmp tabelbx mov dx,tabelbx Start2: mov ah,9 mov ah,9int 21h int 21h.exit 0 .exit 0 end程序变得更加简单。取显示信息偏移地址取转移地址送IP8484第 四 章 基 本 汇 编 语 言 程 序 设 计4.94.9 编制一个程序,将变量BUFX、BUFY中较大者送入 BUFZ;若两者相等,则把其中之一送入BU

11、FZ中。设变 量为无符号8位数。ALBUFXCMP AL,BUFYAL小于BUFY?ALBUFYBUFZALYNDONE:JAE DONE8585第 四 章 基 本 汇 编 语 言 程 序 设 计4.104.10 设变量bufX为有符号数,编程将其符号状态保存 在singX,如X大于等于0,保存0;如X小于0,保存-1 。该题为一个可以演变成单分支的双分支结构: 测试bufX符号0-1singX0singXnextY0singX测试bufX符号0-1singXnextY8686第 四 章 基 本 汇 编 语 言 程 序 设 计4.114.11 X、Y、Z是三个有符号16位数(教材误印为16进

12、制数),编写程序:1)三个数都不相等,显示0;2)有两个数相等,显示1;3)三个数都相等,显示2。三个数比较,应有5种情况: X=Y=Z 显示2 X=YZ 显示1 X=ZY 显示1 XY=Z 显示1 XYZ 显示0编程时必须要考虑到所有5种情况。8787第 四 章 基 本 汇 编 语 言 程 序 设 计4.11框图X-ZX=Y=ZX=YZXY=ZX=ZYZF=1X-YX-ZY-ZXYZZF=1ZF=1ZF=0ZF=0ZF=1ZF=08888第 四 章 基 本 汇 编 语 言 程 序 设 计4.134.13 例题4.8内外循环次数共是多少?如果要求从大 到小排序,程序如何修改?待排序的数据共20

13、项外循环次数为19次,每轮外 循环中对应的内循环次数如下:第1轮 内循环次数19第2轮 18 第18轮 2第19轮 1因此,内循环次数共19+18+17+2+1=190,内 外循环总数为190+19=209次。如果要求从大到小排序,每次比较时只要保证后 面的数不大于前面的数,则第一轮外循环结束后,最 小的数就排在了最后。8989第 四 章 基 本 汇 编 语 言 程 序 设 计4.164.16 编程实现把键入的一个字符,用二进制形式( 0/1)显示出它的ASCII码值。A显示010000011号功能调用(AL)CX8AL左移(循环左移)1位CF=0?MOV DL,31HMOV DL,30HAB

14、BMOV AH,2INT 21H循环结束?结束YNA0 19090第 四 章 基 本 汇 编 语 言 程 序 设 计4.204.20 编程判断主存0070:0开始的1KB中有无字符串 DEBUG。DS0070H;BX0;CX1024-5CMP BYTE PTRBX,D是D?SIBX;SISI+1CMP BYTE PTRSI,E是E?SISI+1 是B?SISI+1是U?SISI+1 是G?AA设置找到标志结束BBBXBX+1查完?结束N9191第 四 章 基 本 汇 编 语 言 程 序 设 计4.214.21 编程将一个16位无符号数转换成5位BCD码。转换算法为:二进制数除以10000,商为万位,再 用余数除以1000,得到千位,依次可以得到百位、十 位、个位。另外,也可以仿照例题4.14的算法,先得到个位 ,然后依次得

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

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

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