结束
23
源程序如下:
;数据段 Tab dw R0, R1, R2, R3, R4, R5, R6, R7, R8, R9
;代码段 Start: mov ah,01
int 21h Cont: mov ah,0
and al,0fh add al,al
;从键盘输入0~9中的数字i ;i*2
24
lea bx,tab
实例:求绝对值
9
例:计算AX中有符号数的绝对值
CMP AX,0
JGE NONEG ;条件满足(AX≥0),转移
NEG AX
;条件不满足,求补
NONEG: MOV RESULT,AX
;条件满足
;另解
AND AX,AX
其它实现方法?
JNS NONEG ;条件满足(AX ≥ 0),转移
YESNEG: NEG AX
31
例3: 将首地址为A的字数组从小到大排序 (气泡算 法,多重循环)
A dw 32,85,16,15, 8
序号 地址
数
1A
32
2 A+2 85
3 A+4 16
4 A+6 15
5 A+8 8
比较遍数
1
2
3
4
32
16 15 8
16
15
8
15
15
8 16 16
8
32 32 32
85
85 85 85
气泡排序算法程序 框图
42
1) 用寄存器传递参数
• 最简单和常用的参数传递方法。
P203例6.13
例1:求数组ARY中所有元素之和并存于SUM单元 中。 ;子程序名:SUM1。程序功能:求字节数组和。 ;入口参数:SI=数组首址,CX=数组长度 ;出口参数:AX=数组和。使用寄存器:AX,CX, SI。