文档介绍:第 4 章
教学重点
综合应用第2章硬指令和第3章伪指令,第4章从程序结构角度展开程序设计,重点掌握:
分支结构程序设计
循环结构程序设计
子程序结构程序设计
顺序程序设计
顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构
计算
移位
例题代码转换
.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
-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
图示
-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 章
64位数据左移8位
12
34
56
78
87
65
43
21
00
qvar[0]
qvar[1]
qvar[2]
qvar[3]
qvar[4]
qvar[5]
qvar[6]
qvar[7]
例题代码转换-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
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
分支程序设计
分支程序根据条件是真或假决定执行与否
判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志
和JMP可以实现分支控制;还可以采用MASM
单分支:求绝对值等
双分支:
多分支: