用寄存器来储存参数和结果是最常使用的方法
- 计算data段中第一组数据的3次方,结果保存在后面一组的dword单元中
assume cs:code data segment dw 1,2,3,4,5,6,7,8 dd 0,0,0,0,0,0,0,0 data ends code segment start: mov ax,data mov ds,ax mov si,0 mov di,16 mov cx,8 s: mov bx,[si] call cube mov [di],ax mov [di].2,dx add si,2 add di,4 loop s cube: mov ax,bx mul bx mul bx ret code ends end start
用内存单元批量传送数据
- 将批量数据放到内存中,然后将它们所在内存空间的首地址放在寄存器中,传递给需要的子程序
- 对于具有批量数据的返回结果,也可用同样的方法
- 例:将data段中的字符串转化为大写
assume cs:code data segment db 'conversation' data ends code segment start:mov ax,data mov ds,ax mov si,0 mov cx,12 call capital mov ax,4c00h int 21h capital:and byte ptr [si],11011111b inc si loop capital ret end start
用栈传递参数
- 设a = 3、b = 1,计算:(a - b) ^ 3
mov ax,1 push ax mov ax,3 push ax call difcube difcube:push bp mov bp,sp mov ax,[bp+4] sub ax,[bp+6] mov bp,ax mul bp mul bp pop bp ret 4 ;return n的含义 pop ip add sp n