第11~12讲第4章汇编语言程序设计23.ppt
《第11~12讲第4章汇编语言程序设计23.ppt》由会员分享,可在线阅读,更多相关《第11~12讲第4章汇编语言程序设计23.ppt(48页珍藏版)》请在三一文库上搜索。
1、第 4 章,通过本章的学习,应当掌握以下内容: 了解汇编语言的基本知识和特点。 熟悉汇编语言的程序结构、段定义以及语句的格式。 掌握汇编语言常用伪指令的使用方法。 熟练掌握汇编语言程序设计的基本方法:顺序结构、 分支结构、循环结构和子程序结构。 *掌握程序设计中的宏指令和常用的系统功能的调用方法。,是否掌握?,教学目的,综合硬指令和伪指令,从程序结构角度展开程序设计,: 分支结构程序设计 循环结构程序设计 子程序结构程序设计,教学重点,1. 掌握基本程序结构顺序结构、循环结构、分支结构及其汇编语言程序设计 2. 熟悉常见程序设计问题: 数据范围判断(09、AZ、az) 字母大小写转换; 字符串
2、传送、比较等操作 求最大最小值、数据求和、统计字符个数 数组排序,查找,插入,删除,(3)分支结构 (4) 子程序结构, 程序结构,(5)复合结构:多种程序结构的组合,(1) 顺序结构 (2) 循环结构, 编制汇编语言程序的步骤,(1) 分析题意,确定算法 根据算法画出程序框图 (3)分配存储空间及工作单元 根据框图编写程序 (5)上机调试程序,4.3 顺序程序设计,顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构 一般纯粹的顺序结构的程序设计较少,例4.1 计算,例4.2 移位,例题 代码转换,例4.1,.model small .stack .data X dw
3、5 Y dw 6 Z dw 7 W dw ?,.code .startup mov ax,X add ax,Y add ax,Z mov W,ax .exit 0 end,64位数据左移8位 例4.21/2,.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
4、byte ptr qvar4,al,图示,3456788765432100,例4.22/2,mov al,byte ptr qvar2 mov byte ptr qvar3,al mov al,byte ptr qvar1 mov byte ptr qvar2,al mov al,byte ptr qvar0 mov byte ptr qvar1,al mov byte ptr qvar0,0,12 34 56 78 87 65 43 21h,34 56 78 87 65 43 21 00h,移位后,图示,64位数据左移8位,12,34,56,78,87,65,43,21,00,qvar0,q
5、var1,qvar2,qvar3,qvar4,qvar5,qvar6,qvar7,例题 代码转换1/2,;查表法,实现一位16进制数转换为ASCII码显示 .model small .stack .data ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;09的ASCII码 db 41h,42h,43h,44h,45h,46h ;AF的ASCII码 hex db 0bh ;任意设定了一个待转换的一位16进制数,例题 代码转换2/2,.code .startup mov bx,offset ASCII ;BX指向ASCII码表 mov a
6、l,hex ;AL取得一位16进制数,正是ASCII码表中位移 and al,0fh ;只有低4位是有效的,高4位清0 xlat ;换码:ALDS:BXAL mov dl,al ;入口参数:DLAL mov ah,2 ;02号DOS功能调用 int 21h ;显示一个ASCII码字符 .exit 0 end,4.4 分支程序设计,分支程序根据条件是真或假决定执行与否 判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志 转移指令Jcc和JMP可以实现分支控制,单分支:求绝对值等,双分支:显示BX最高位等,多分支:例4.4等,15/18,汇编语言程序的基本结构,分支结构: 利用条件转移
7、指令,使程序执行到某一指令后,根据条件是否满足,来改变程序执行的顺序。 一般先用比较指令或数据操作及位检测指令来改变标志寄存器各个标志位,然后用条件转移指令进行分支。 绘制程序流程图步骤必不可少! 绘制程序流程图,一般先按上下流程线写,再完成分支部分。 绘制程序流程图的判断环节时,要特别注意把握逻辑关系和标志位的意义。,单分支程序设计,条件成立跳转,否则顺序执行分支语句体;注意选择正确的条件转移指令和转移目标地址,例题 求绝对值,;计算AX的绝对值 cmp ax,0 jns nonneg ;分支条件:AX0 neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满
8、足 ;计算AX的绝对值 cmp ax,0 js yesneg ;分支条件:AX0 jmp nonneg ;分支条件:AX=0 yesneg: neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足,Good,Bad,例题 无符号数除以2,;AX中存放的无符号数;如果是偶数除以2,如果是奇数,则加1后除以2 test ax,01h ;测试AX最低位 jz even ;最低位为0:AX为偶数 add ax,1 ;最低位为1:AX为奇数,需要加1 even: rcr ax,1 ;AXAX2 ;如果采用SHR/SAR指令,则不能处理AXFFFFH的特殊情况,双分支程序
9、设计,条件成立跳转执行第2个分支语句体,否则顺序执行第1个分支语句体。注意第1个分支体后一定要有一个JMP指令跳到第2个分支体后,例题 显示BX最高位-1,shl bx,1 ;BX最高位移入CF jc one ;CF1,即最高位为1,转移 mov dl,0 ;CF0,即最高位为0,DL0 jmp two ;一定要跳过另一个分支体 one: mov dl,1 ;DL1 two: mov ah,2 int 21h ;显示,另一种解法,例题 显示BX最高位-2,shl bx,1 ;BX最高位移入CF jnc one ;CF0,即最高位为0,转移 mov dl,1 ;CF1,即最高位为1,DL1 jm
10、p two ;一定要跳过另一个分支体 one: mov dl,0 ;DL0 two: mov ah,2 int 21h ;显示,另一种解法,例题 显示BX最高位-3,mov dl,0 ;DL0 shl bx,1 ;BX最高位移入CF jnc two ;CF0,最高位为0,转移 mov dl,1 ;CF1,最高位为1,DL1 two: mov ah,2 int 21h ;显示,双分支程序可以改为单分支程序,多分支程序设计,多个条件对应各自的分支语句体,哪个条件成立就转入相应分支体执行。多分支可以化解为双分支或单分支结构的组合,例如: or ah,ah ;等效于cmp ah,0 jz functi
11、on0 ;ah0,转向function0 dec ah ;等效于cmp ah,1 jz function1 ;ah1,转向function1 dec ah ;等效于cmp ah,2 jz function2 ;ah2,转向function2,图示,多分支结构,地址表形成多分支,需要在数据段事先安排一个按顺序排列的转移地址表 输入的数字作为偏移量。因为有2个字节16位偏移地址,所以偏移量需要乘2 关键是要理解间接寻址方式JMP指令,.data msg db Input number(18):,0dh,0ah,$ msg1 db Chapter 1 : .,0dh,0ah,$ msg2 db Ch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 12 汇编 语言程序设计 23
链接地址:https://www.31doc.com/p-2985998.html