汇编语言程序设计教案.ppt
《汇编语言程序设计教案.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计教案.ppt(71页珍藏版)》请在三一办公上搜索。
1、汇编语言程序设计,第七讲,课题二 基本程序结构,程序流程图 顺序程序设计 分支程序设计 循环程序设计 子程序设计,汇编程序设计的一般步骤,分析问题,建立数学模型确定算法编制程序流程图合理分配存储空间和寄存器编制程序调试程序,一、程序流程图,(a)处理框(b)判断框(c)起止框(d)连接框(e)流向线,流程图的组成流程图主要由以下几种框图符号组成:,一、程序流程图,例:判断两无符号数大小的流程图,开始,AX 无符号数1BX 无符号数2,AXBX=0?,显示 AX=BX,AXBX 0?,显示 AX BX,显示 AX BX,结束,Y,N,N,Y,二、顺序程序设计,顺序程序结构是最简单、最基本的程序结
2、构;无任何分支,从流程图上看,只有起止框和处理框,无判断框;,二、顺序程序设计,例:将AL中的两位十进制数分别转换为它们相应的ASCII码,分别存放在BH和BL中。,解:CODE SEGMENT ASSUME CS:CODESTART:MOV BL,AL MOV BH,AL AND BL,0FH OR BL,30H MOV CL,4 SHR BH,CL OR BH,30H,MOV AH,4CH INT 21H CODE ENDS END START,附:汇编程序上机运行过程,第一步:编辑源文件(生成.ASM文件)EDIT XXX.ASM 说明:在EDIT环境中,按Alt+F调出菜单后可选择存盘
3、退出。第二步:汇编源文件(生成.OBJ文件)MASM XXX 说明:1、文件名XXX后面可不带扩展名,缺省为.asm 2、运行masm后,可连续按提示进行下一步操作,选择默认值可直接回车。如有错误需回到第一步修改。,附:汇编程序上机运行过程,第三步:连接目标文件(生成.EXE文件)LINK XXX 说明:1、汇编通过后,连接一般都可通过并获得EXE文件。2、此命令中文件名XXX不需带扩展名。缺省为.obj第四步:运行可执行文件 XXX(在DOS下直接运行)或DEBUG XXX.EXE(在DEBUG中运行),三、分支结构程序设计,分支结构也叫选择结构;在程序运行中,执行哪条指令是由CS和IP决定
4、的,在程序运行的过程中改变CS和IP,就是改变了程序的流向,从而得到分支、循环、子程序等程序结构;分支结构的实现须借助于程序转移指令的控制;,附:转移指令,转移指令分为两种:无条件转移指令条件转移指令,1、无条件转移指令,格式:JMP 目标说明:目标通常用标号来表达,根据转移的远/近、直接/间接不同,可有以下几种格式:JMP 标号;段内直接转移JMP CX;段内间接转移JMP WORD PTR BX;段内间接转移JMPFAR PTR 标号;段间直接转移JMP DWORD PTR BXSI;段间间接转移,2、条件转移指令,基本格式:JXX 目标说明:字母“J”后面的“XX”是指“条件”,如果条件
5、成立,则转移至“目标”处执行,否则顺序执行。条件转移指令共18条,它们均以F寄存器中状态标志位作为判断条件,但执行后均不影响各标志位。此类指令都只能在以当前IP内容为中心的 128 至127字节范围内转移(短转移)。超过要修改程序。,2、条件转移指令,这18条指令又可分为三大类:简单条件转移指令无符号数条件转移指令带符号数条件转移指令,表一 简单条件转移指令,标志位,指 令,转移条件,含 意,JC,JNC,CF=1,CF=0,有进/借位,无进/借位,CF,ZF,SF,OF,PF,JE/JZ,JNE/JNZ,ZF=1,ZF=0,相等/等于0,不相等/不等于0,JS,JNS,SF=1,SF=0,是
6、负数,是正数,JO,JNO,SF=1,SF=0,有溢出,无溢出,JP/JPE,JNP/JPO,SP F=1,SF=0,有偶数个1,有奇数个1,表二 无符号数条件转移指令,指 令,转移条件,含 意,JA/JNBE,CF=0 且 ZF=0,JAE/JNB,A B,JB/JNAE,JBE/JNA,CF=0 或 ZF=1,A B,CF=1 AND ZF=0,CF=1 OR ZF=1,A B,A B,表三 有符号数条件转移指令,指 令,转移条件,含 意,JG/JNLE,SF=OF 且 ZF=0,JGE/JNL,A B,JL/JNGE,JLE/JNG,SF=OF 或 ZF=1,A B,SF OF 且 ZF
7、=0,SF OF 或 ZF=1,A B,A B,三、分支结构程序设计,例:判断两无符号数的大小,解:DATA SEGMENT DA1 DB?DA2 DB?A_MESSAGE DB AB,$B_MESSAGE DB BA,$DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,DA1 MOV BL,DA2,CMP AL,BL JA ABIG MOV DX,OFFSET B_MESSAGE MOV AH,9 INT 21H FINISH:MOV AH,4CH INT 21H ABIG:MOV
8、 DX,OFFSET A_MESSAGE MOV AH,9 INT 21H JMP FINISH CODE ENDS END START,练习,已知AL中存放某ASCII码,试编制程序,判断该ASCII码代表的是数字,小写英文字母还是大写英文字母?用Int 21H中9号功能显示结果。,参考答案,DATA SEGMENT N_MSG DB Number,$L_ MSG DB Lowercase,$C_MSG DB Capital,$OTHERS DB OHTERS,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV
9、 DS,AX MOV AL,11H,打开程序文件,参考答案(续),CMP AL,30H JB OTHER CMP AL,39H JBE N CMP AL,41H JB OTHER CMP AL,5AH JBE C CMP AL,61H JB OTHER CMP AL,6AH JBE L JMP OTHER,参考答案(续),N:MOV DX,OFFSET N_MSG MOV AH,9 INT 21H JMP ENDINGL:MOV DX,OFFSET L_MSG MOV AH,9 INT 21H JMP ENDINGC:MOV DX,OFFSET C_MSG MOV AH,9 INT 21H J
10、MP ENDING,参考答案(续),OTHER:MOV DX,OFFSET OTHERS MOV AH,9 INT 21HENDING:MOV AH,4CH INT 21HCODE ENDS END START,四、循环程序设计,1循环程序结构,循环控制部分,2为何需要循环?,简化程序的编制简少程序对内存的占用。3如何实现循环?使用条件转移指令:Jxx 目标使用循环控制指令:LOOP 目标 等,4循环控制指令,80868088循环控制指令共有四条,下面介绍其中一条最常用指令:LOOP指令:指令格式:,LOOP 目标,指令功能:自动进行循环次数的计数(即CXCX1)后,如计数寄存器CX0,则转移
11、到目标单元,否则顺序执行。,相当于这两条指令:DEC CX JNZJNE 目标,说明:此指令隐含使用CX作为循环计数器;因此应注意先设置好CX的初始值。,例:计算:12320。结果存入AX寄存器。,CODE SEGMENT ASSUME CS:CODESTART:MOV CX,0014H MOV AX,0 A:ADD AX,CX LOOP A CODE ENDS END START,初始化部分,处理部分,循环控制部分,练习,在数据段定义一段长度为100字节的数据区,其各单元内容任意。然后统计该区中有多少个存储单元的内容小于或等于5(按无符号数比较)。将统计结果放在DL中。,参考答案:,data
12、 segment dat db 100 dup(?)data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax,参考答案(续):,mov si,offset dat mov dl,0 mov cx,100next:cmp byte ptr si,5 jbe count inc si loop next jmp endingcount:inc dl inc si loop next,ending:mov ah,4ch int 21hcode ends end start,五、子程序设计,调用:在主程序中使用命令:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 教案
链接地址:https://www.31ppt.com/p-6053179.html