1. 利用调用和返回的对应可以实现类似函数的功能:
a. 其实高级语言中函数的实现即时基于汇编的call和ret的;
b. 这样就可以设计一个个用于解决子问题的子程序,通过调用和返回将各个子程序组合成一个解决大问题的主程序;
2. 利用寄存器传参和返回:
a. 在传送的数据量不是很少的情况下可以使用,但是如果传送的批量的数据时寄存器就明显显得不够用了,此时就只能借助内存来实现参数的传递;
b. 程序示例:将第一组数据的三次方保存在第二组数据中
assume cs:code, ds:data
data segment
dw 1, 2, 3, 4, 5, 6, 7, 8
dd 8 dup(0)
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov di, 10h
mov cx, 8
s:
mov bx, [si]
call cube
mov [di], ax
mov [di + 2], dx
add si, 2
add di, 4
loop s
mov ax, 4c00h
int 21h
cube:
mov ax, bx
mul bx
mul bx
ret
code ends
end start
3. 利用内存传递参数和返回值:
a. 当传递的参数是批量的时寄存器就不够用了;
b. 解决方法:
i. 基于寄存器传递;
i