第4章 本语言程序议汗
第 4 章
教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: 派言槽 √分支结构程序设计 √循环结构程序设计 √子程序结构程序设计 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: ✓分支结构程序设计 ✓循环结构程序设计 ✓子程序结构程序设计
第4章 4.1顺序程序设计 >顺序程序完全按指令书写的前后顺序 执行每一条指令,是最基本、最常见 的程序结构 8例4.1计算 燃例4.2移位 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 4 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 4.1 顺序程序设计 ➢顺序程序完全按指令书写的前后顺序 执行每一条指令,是最基本、最常见 的程序结构 例4.1 计算 例4.2 移位
例4.1 model small.code stack startup data mov ax, x dw 5 add ax xYz y dw 6 add ax mov aX z dw 7 exit o w dw en
例4.1 .model small .stack .data X dw 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
data 例4.2-1/2 gvar dg123456788765432lh code mov al, byte ptr gvar [6] 图示 mov byte ptr gvarl7l, al mov al, byte ptr gvar[5] moy byte ptr gvar[6], al mov al, byte ptr gvar[4] moy byte ptr gvar[5], al mov al, byte ptr gvar[3] moy byte ptr gvar[4], al
例4.2-1/2 .data qvar dq 1234567887654321h .code mov al,byte ptr qvar[6] mov byte ptr qvar[7],al mov al,byte ptr qvar[5] mov byte ptr qvar[6],al mov al,byte ptr qvar[4] mov byte ptr qvar[5],al mov al,byte ptr qvar[3] mov byte ptr qvar[4],al 图示
mov al, byte ptr gvar[2] 例4.2-2/2 mov byte ptr gvar [3], al mov al, byte ptr gvar[l] mov byte ptr gvar[2], al 图示 mov al, byte ptr gvar[oj moy byte ptr gvar[], al moy byte ptr gvar[o],0 1234567887654321h 移位后3456788765432100h
例4.2-2/2 mov al,byte ptr qvar[2] mov byte ptr qvar[3],al mov al,byte ptr qvar[1] mov byte ptr qvar[2],al mov al,byte ptr qvar[0] mov byte ptr qvar[1],al mov byte ptr qvar[0],0 12 34 56 78 87 65 43 21h 34 56 78 87 65 43 21 00h 移位后 图示
第4章 4.2分支程序设计 >分支程序根据条件是真或假决定执行与否 >判断的条件是各种指令,如CMP、TEST等执行 后形成的状态标志 转移指令Jcc和JMP可以实现分支控制;还可以 采用MASM6x提供的条件控制伪指令实现 单分支:求绝对值 燃双分支:例4.3等 多分支:例4.4等 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 4 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 4.2 分支程序设计 ➢ 分支程序根据条件是真或假决定执行与否 ➢ 判断的条件是各种指令,如CMP、TEST等执行 后形成的状态标志 ➢ 转移指令Jcc和JMP可以实现分支控制;还可以 采用MASM 6.x提供的条件控制伪指令实现 单分支:求绝对值 双分支:例4.3等 多分支:例4.4等
第4章 单分支程序设计 >条件成立跳转,否 则顺序执行分支语 句体;注意选择正 Jcc条件满足? Y 确的条件转移指令 和转移目标地址 分支语句体 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 4 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 单分支程序设计 ➢条件成立跳转,否 则顺序执行分支语 句体;注意选择正 确的条件转移指令 和转移目标地址
;计算AX的绝对值 例题求绝对值 c· Good cmp ax,0 Jns nonneg;分支条件:AX≥0 neg ax 条件不满足,求补 nonneg: mov result,ax;条件满足 ;计算AX的绝对值 Bad cmp ax, 0 j1 yeshe;分支条件:AX<0 Jmp honneg yesneg. neg ax 条件不满足,求补 monnet: mov result,ax;条件满足
例题 求绝对值 ;计算AX的绝对值 cmp ax,0 jns nonneg ;分支条件:AX≥0 neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足 ;计算AX的绝对值 cmp ax,0 jl yesneg ;分支条件:AX<0 jmp nonneg yesneg: neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足 Good Bad
第4章 双分支程序设计 >条件成立跳转执行 第2个分支语句体, Jc条件满足? 否则顺序执行第1个 N 分支语句体。注意第 分支语句体1 1个分支体后一定要 有一个JMP指令跳到 JMP 第2个分支体后 分支语句体2 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 4 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 双分支程序设计 ➢条件成立跳转执行 第2个分支语句体, 否则顺序执行第1个 分支语句体。注意第 1个分支体后一定要 有一个JMP指令跳到 第2个分支体后