第6章 编语言醒序没计
第6章
教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: √分支结构程序设计 √循环结构程序设计 √子程序结构程序设计
教学重点 综合应用第2章硬指令和第 3章伪指令,第4章从程序 结构角度展开程序设计,重 点掌握: ✓分支结构程序设计 ✓循环结构程序设计 ✓子程序结构程序设计
顺序程序设计 >顺序程序完全按指令书写的前后 顺序执行每一条指令,是最基本、 最常见的程序结构 8例4.1计算 例4.2移位 例题代码转换
顺序程序设计 ➢顺序程序完全按指令书写的前后 顺序执行每一条指令,是最基本、 最常见的程序结构 例4.1 计算 例4.2 移位 例题 代码转换
例4.1 model small. code stack 256 startup data mov ax, x dw 5 add ax XYZ y dw 6 adc ax, mov aX z dw 7 exit o w dw en
例4.1 .model small .stack 256 .data X dw 5 Y dw 6 Z dw 7 W dw ? .code .startup mov ax,X add ax,Y adc 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 qvar[7],a1图示 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
.data 例4.2-1/2 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 256 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 256 .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码表中位移 and al,0fh;只有低4位是有效的,高4位清 0 xlat 换码:AL←DS:[BX+AL] mov dl. al 入口参数:DL←AL moy ah. 2 02号D0S功能调用 int 21h ;显示一个ASCI码字符 exit o ENTER
例题 代码转换-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.2分支程序设计 分支程序根据条件是真或假决定执行与否 >判断的条件是各种指令,如cMP、TEST等 执行后形成的状态标志 转移指令Jcc和JMP可以实现分支控制;还 可以采用MASM6x提供的条件控制伪指令 实现 ③单分支:例2.41等 燃双分支:例4.3 80参分文:例4.4等
4.2 分支程序设计 ➢ 分支程序根据条件是真或假决定执行与否 ➢ 判断的条件是各种指令,如CMP、TEST等 执行后形成的状态标志 ➢ 转移指令Jcc和JMP可以实现分支控制;还 可以采用MASM 6.x提供的条件控制伪指令 实现 单分支:例2.41等 双分支:例4.3等 多分支:例4.4等
第4 单分支程序设计 条件成立跳转, Jcc条件满足? 否则顺序执行分 支语句体;注意 N 选择正确的条件 分支语句体 转移指令和转移 目标地址 〔a)单分支结构
单分支程序设计 ➢条件成立跳转, 否则顺序执行分 支语句体;注意 选择正确的条件 转移指令和转移 目标地址 第4章