匯編子程序使用


1: 引子

基本定義格式:

  1: far       不再相同代碼段  調用: call far ptr max

  2: near    在相同代碼段     調用: call max

name proc  far|naer

name endp

 操作數因子:

  1: 取數

通用操作:
push bp
mov  bp,sp 

1: 取第一個數 mov ax,[bp+4] '特殊 bp指向堆棧段bp
2: 取第二個數 mov ax,[bp+6]

 

基本結構:

assume cs:code, ss:stack
stack segment
       db  16 dup (0)
stack ends
code segment

main proc     ;這是我們的主程序
start: mov ax,stack
       mov ss,ax
       mov sp,16
       mov ax,1000
       call far ptr s  ;依然用s標識調用的入口
       mov ax,4c00h
       int 21h
main endp

subp proc   ;這個作為子程序
    s: add ax,ax
       ret
subp endp

code ends
end start

 

2:熟悉基本程序

題目: 實現 MAX (int a,int b)函數 即為返回a b中的最大值

datas segment
    a dw '1';
    b dw '2';
    res dw 0;
datas ends

stacks segment stack
    dw 100 dup(?)
stacks ends

codes segment
assume cs:codes,ds:datas,ss:stacks

main proc ; 主程序
start:
    mov ax,datas;
    mov ds,ax;
    push a;
    push b;
    call max 
    mov sp,4;
    mov  res,ax
    mov ah,4ch;
    int 21h
main endp

max proc near ;子程序
    push bp;
    mov bp,sp;
    mov ax,[bp+4]
    mov bx,[bp+6]
    cmp ax,bx
    jg let
    mov ax,bx;
    let:
    pop bp
    ret 0
max endp    
codes ends
end start

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM