第4章 本语言程序议汗
第 4 章
教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: 派言槽 √分支结构程序设计 √循环结构程序设计 √子程序结构程序设计
教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: ✓分支结构程序设计 ✓循环结构程序设计 ✓子程序结构程序设计
第4章 4.1顺序程序设计 >顺序程序完全按指令书写的前后 顺序执行每一条指令,是最基本、 最常见的程序结构 8例4.1计算 燃例4.2移位 8例题代码转换
第 4 章 4.1 顺序程序设计 ➢顺序程序完全按指令书写的前后 顺序执行每一条指令,是最基本、 最常见的程序结构 例4.1 计算 例4.2 移位 例题 代码转换
例4.1 model smal1. 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 移位后 图示
例题代码转换-1/2 ;查表法,实现一位16进制数转换为ASCI码显示 model small stack data ascii db 3oh 31h 32h 33h 34h 35h db36h,37h,38h,39h;0~9的 ASCII码 db4h,42h,43h,44h,45h,46h ;A~F的 ASCII码 hex db obh ;任意设定了一个待转换的一位16进制数
例题 代码转换-1/2 ;查表法,实现一位16进制数转换为ASCII码显示 .model small .stack .data ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;0~9的ASCII码 db 41h,42h,43h,44h,45h,46h ;A~F的ASCII码 hex db 0bh ;任意设定了一个待转换的一位16进制数
例题代码转换-2/2 code startup moy bx, offset ascii;BX指向ASCI码表 mov al, hex ;AL取得一位16进制数,正是 ASCII码表中位移 anda1,0fh;只有低4位是有效的,高4位清0 xlat ;换码:AL←DS:[BX+AL] moy dl,al;入口参数:DL←AL moy ah,2;02号D0S功能调用 int21h;显示一个ASCI码字符 exit o end
例题 代码转换-2/2 .code .startup mov bx,offset ASCII ;BX指向ASCII码表 mov al,hex ;AL取得一位16进制数,正是ASCII码表中位移 and al,0fh ;只有低4位是有效的,高4位清0 xlat ;换码:AL←DS:[BX+AL] mov dl,al ;入口参数:DL←AL mov ah,2 ;02号DOS功能调用 int 21h ;显示一个ASCII码字符 .exit 0 end
第4章 4.2分支程序设计 >分支程序根据条件是真或假决定执行与否 >判断的条件是各种指令,如CMP、TEST等 执行后形成的状态标志 转移指令Jcc和JMP可以实现分支控制;还 可以采用MASM6x提供的条件控制伪指令 实现 单分支:求绝对值等 燃双分支:例4.3等 多分支:例4.4等
第 4 章 4.2 分支程序设计 ➢ 分支程序根据条件是真或假决定执行与否 ➢ 判断的条件是各种指令,如CMP、TEST等 执行后形成的状态标志 ➢ 转移指令Jcc和JMP可以实现分支控制;还 可以采用MASM 6.x提供的条件控制伪指令 实现 单分支:求绝对值等 双分支:例4.3等 多分支:例4.4等
第4章 单分支程序设计 >条件成立跳转,否 则顺序执行分支语 句体;注意选择正 确的条件转移指令 Jcc条件满足? Y 和转移目标地址 分支语句体
第 4 章 单分支程序设计 ➢条件成立跳转,否 则顺序执行分支语 句体;注意选择正 确的条件转移指令 和转移目标地址