汇编语言程序设计第8章80868088分支程序设计.ppt_第1页
汇编语言程序设计第8章80868088分支程序设计.ppt_第2页
汇编语言程序设计第8章80868088分支程序设计.ppt_第3页
汇编语言程序设计第8章80868088分支程序设计.ppt_第4页
汇编语言程序设计第8章80868088分支程序设计.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8086/8088和ARM核 汇编语言程序设计 第 第8 8章章 分支程序设计 分支程序设计 Date 1 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.1 8.1 分支程序的结构形式分支程序的结构形式 8.2 分支结构程序设计 第第8 8章章 分支程序设计分支程序设计 Date 2 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 掌握分支程序设计方法 熟悉常见程序设计问题: 数据范围判断(09、AZ、az)、 字母大小写转换、 ; 教学要求 Date 3 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.1 8.1 分支程序的结构形式分支程序的结构形式 分支程序结构是根据条件转向不同程序分支的结果, 有3种形式:单分支、双分支结构和多分支结构。 Date 4 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.1 8.1 分支程序的结构形式分支程序的结构形式 Date 5 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构程序设计分支结构程序设计 分支程序设计首先要在分析实际问题的基础上确定若干个 程序分支,然后在此基础上选用条件转移指令、或者是选用间 接寻址无条件转移来转向不同的程序分支。前者是测试法分支 程序设计,后者是跳跃表法分支程序设计。 分支程序根据条件是真或假决定执行与否 判断的条件是各种指令,如CMP、TEST等 执行后形成的状态标志 转移指令Jcc和JMP可以实现分支控制 Date 6 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构程序设计分支结构程序设计 分支结构是有若干个条件,每一个条件对应一 个基本操作。分支程序就是判断产生的条件,哪个 条件成立,就执行哪个条件对应操作的程序段。也 就是说,从若干分支中选择一个分支执行。 8.2.1 测试法分支程序设计 例8.1 已知在内存中有一个字节单元NUM,存有带符号 数据,要求计算出它的绝对值后,放入RESULT单元中 。 Date 7 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计 8.2.1 测试法分支程序设计 程序清单:DATA SEGMENT X DB -25 RESULT DB ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOVAX, DATA MOVDS, AX ;初始化 MOVAL, X ;X取到AL中 TESTAL, 80H ;测试AL正负 JZNEXT ;为正,转NEXT NEGAL ;否则AL求补 NEXT:MOVRESULT, AL ;送结果 MOVAH, 4CH INT21H ;返回DOS CODE ENDS END START ;汇编结束 Date 8 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计 8.2.1 测试法分支程序设计 例8.2 试编一程序 ,求三个带符号字数 据中的最大值,并将 最大值存入MAX字单 元中。设三个带符号 数分别在三个字变量 X、Y、Z中存储。 Date 9 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计 8.2.1 测试法分支程序设计 DATA SEGMENT X DW -0ABH Y DW 205 Z DW 200 MAX DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX, DATA MOV DS, AX MOV AX, X CMP AX, Y JGE L1 MOV AX, Y L1: CMP AX, Z JGE EXIT MOV AX, Z EXIT: MOV MAX, AX MOV AH, 4CH INT 21H CODE ENDS END START Date 10 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 第十五讲第十五讲 1、阅读下列程序段,程序执行到HLT时, (AX)=( ),(BX)=( )。(4分) xor ax, ax mov bx, 1 mov cx, 5 lop: add ax, bx inc bx loop lop hlt 0FH或15 6 Date 11 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 2、试分析下列程序段,程序执行后, num2字节单元的内容是什么?如果 num1字节单元的值为39h,运行后 ,num2字节单元的内容又是什么? 由此说明程序完成了什么操作。(6 分) data segment num1 db 41h num2 db ? data ends Code segment assume cs:code, ds:data start: mov ax, data mov ds, ax mov ah, num1 cmp ah, 39h Jbe next sub ah, 7 next: sub ah, 30h mov num2, ah mov ah, 4ch int 21h code ends end start 0AH,09H, 此程序可将num1字节单元中的ascii字 符09,AF转换成十六进制数 09,AF Date 12 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 3、下列程序完成将BX寄存器的数值以十六进制显示输出 ,完成程序填空。(6分) code segment assume (1) start: mov bx, 0DA12H mov ch, 4 rotate : mov cl, 4 ;设置移位指令的移位次数 rol bx, cl mov al, bl and al, 0FH ;取BX寄存器的高四位 add al, (2) ;将十六进制数值转换成对应的ASCII码 cmp al, 3ah jl printit add al, (3) ;处理十六进制数A-F printit: mov DL , al ;调用系统功能,显示一位十六进制数对应 的字符 Mov ah, (4) int 21h dec ch ;循环次数-1 jnz rotate ;处理BX后续四位二进制位 mov ah, 4CH int (5) code ends end (6) cs: code 30H 07H 02 21H start Date 13 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计 8.2.2 跳跃表法 例8.3 设某程序有8 路分支,试根据给 定的N值(18), 将程序的执行转移 到其中的一路分支 。 符合条件2 符合条件1 符合条件8 N=? 程序段8 图8.3 例8.3流程图 开 始 查表地址TAB+(N-1)*2 程序段1 程序段2 Date 14 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.2 跳跃表法 DATA SEGMENT TAB DW P1,P2,P3,P4,P5,P6,P7,P8 N DB 5 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX, DATA MOV DS, AX MOV AL, N DEC AL ADD AL, AL MOV BL, AL MOV BH, 0 JMP TABBX P1: JMP EXIT P2: JMP EXIT P8: EXIT: MOV AH,4CH INT 21H CODE ENDS END START Date 15 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 例:根据 AL 寄存器中哪一位为 1(从低位到高位), 把程序转移到 8 个不同的程序分支 branch_table dw routine1 dw routine2 dw routine3 dw routine4 dw routine5 dw routine6 dw routine7 dw routine8 跳跃表法 Date 16 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 cmp al, 0 ;AL为逻辑尺 je continue lea bx, branch_table L: shr al, 1 ;逻辑右移 jnc add1 jmp word ptrbx ;段内间接转移 add1: add bx, type branch_table ;add bx,2 jmp L continue: routine1: routine2: (寄存器间接寻址) Date 17 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 (寄存器相对寻址) cmp al, 0 je continue mov si, 0 L: shr al, 1 ;逻辑右移 jnc add1 jmp branch_tablesi ;段内间接转移 add1: add si, type branch_table jmp L continue: routine1: routine2: Date 18 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 (基址变址寻址) cmp al, 0 je continue lea bx, branch_table mov si, 7 * type branch_table mov cx, 8 L: shl al, 1 ;逻辑左移 jnc sub1 jmp word ptr bxsi ;段内间接转移 sub1: sub si, type branch_table ;(si)-2 loop L continue: routine1: routine2: Date 19 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.3举例 例8.4 在附加段中,有一个按从小到大顺序排列的无符号字节数组ARRAY ,要求在数组中查找字节X,若找到则使CF=0,并在ADDR中给出该元素在 数组中的偏移地址;如未找到则使CF=1。 算法分析: 折半查找法是先取有序数组的中间元素与查找值相比较,如相等则查找成 功;如查找值大于中间元素,则再取高半部的中间元素与查找值相比较; 如查找值小于中间元素,则再取低半部的中间元素与查找值相比较;如此 重复直到查找成功或者最终未找到该数(查找不成功)为止。对于长度为 N的表格,折半查找法的平均比较次数为log2N,而顺序查找法平均要作 N/2次比较。 Date 20 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.3举例 Date 21 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.3举例 DSEG SEGMENT ARRAYDW 114H,128H,256H,259H,325H,14ADH, 34DEH,4D34H,5FDAH XDW 256H ADDR DW ? LOW1 DW ? HIGH1DW ? LEN1=(X-ARRAY)/2 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:DSEG START:PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES,AX MOV AX,X Date 22 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.3举例 LEA DI,ARRAY CMP AX,ES:DI JA LAB1;大于最小数 LEA SI ,ES:DI JE EXIT;找到,结束 STC;未找到 JMP EXIT1 LAB1: MOV SI,LEN1-1 SHL SI,1 ADD SI,DI;使SI指向最后一个元素 CMP AX,ES:SI JB LAB2;小于最大数,则转去查询 JE EXIT STC JMP EXIT1 LAB2:MOV LOW1,1 MOV BX,LEN1 MOV HIGH1,BX MOV BX,DI Date 23 第1章 汇编语言基础知识 8章 分支程序设计 网络工程系汇编语言程序设计汇编语言程序设计安徽工业大学 8.2 8.2 分支结构分支结构程序设计程序设计8.2.3举例 LABM:MOV CX,LOW1 MOV DX,HIGH1 CMP CX,DX JA NOFOUND ADD CX,DX SHR CX,1 MOV SI,CX SHL SI,1 COMP: CMP AX,ES:BX+SI JE EXIT JA LABH DEC CX MOV HIGH1,CX JMP LABM LABH: INC CX MOV LOW1,CX JM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论