文档介绍:封面
第四章
基本汇编语言程序设计
* * * * * * * * * * * * * * * * *
1
第四章基本汇编语言程序设计
第四章基本汇编语言程序设计
顺序程序设计
分支程序设计
循环程序设计
子程序设计
过程定义伪指令
子程序的参数传递
子程序的嵌套、递归与重入
子程序的应用
本章要点及习题分析
2
(e)
顺序程序设计
指令按程序中的书写顺序逐条执行,称为顺序程序。除非编程解决非常简单的问题,顺序程序并不多见,但是顺序程序往往是复杂程序结构的一部分,如分支结构的一个分支,循环结构的循环体等。
返回第四章
3
:设有3个字变量x,y和z,求出三者之和,结果存入字变量w。
.model small .startup
.stack mov ax,x
.data add ax,y
X dw 5 add ax,z
Y dw 6 mov w,ax
Z dw 7 .exit 0
W dw ? end
.code
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]
5
.model small
.stack
.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
6
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
(移位前)
(移位后)
返回第四章
7
分支程序设计
和无条件转移指令JMP用于实现程序的分支结构,JMP不测试条件,Jcc可根据条件是否成立决定转移到指定位置或不转移而顺序执行后续指令。不支持条件表达式,而是以当前标志位的状态为条件,之前一定要安排设置标志位的指令,如加减法、比较、测试等指令。基本分支类型分为单分支和双分支。
8
单分支
1. 单分支类型
对同一个问题,根据选择的条件不同,单分支结构的流程图有两种画法,对应的程序也有两种编法。如计算AX中的有符号数的绝对值。
9
单分支
cmp ax,0
jge noneg
neg ax
Noneg: mov result,ax
cmp ax,0
(教材有误) jnge yesneg
jmp done
yesneg: neg ax
Done: mov result,ax
AX≥0 ?
求补指令
Y
N
保存结果
AX<0?
求补指令
Y
N
保存结果
JMP
10