我已经在emu8086中编写了这段代码。
当我按下 emulate 时,编译代码需要很长时间,并且编译时它的工作异常不正确。(而不是跳转到 main 它跳转到函数 max 等)
在你说“magshimim.inc”可能有问题之前,没有,它适用于其他文件。
include magshimim.inc
org 100h
jmp main
;--------------------------------------------;
; Functions
;--------------------------------------------;
; This function gets 2 numbers and an address.
; It stores the biggest number in the address.
; Input:
; push result_address
; push num1
; push num2
PROC max
; store offset of parameters relative to bp
result_p equ 6
num1 equ 4
num2 equ 2
push bp ; store the previous stack frame
mov bp, sp ; create new stack frame
push ax ; store ax
mov ax, [bp+num1]
cmp ax, [bp+num2]
jng num1_bigger_num2
num1_bigger_num2:
mov ax, [bp+num1]
mov [[bp+result_p]], ax
jmp skip1
num1_not_bigger_num2:
mov ax, [bp+num2]
mov [[bp+result_p]], ax
skip1:
pop ax ; re-store ax
mov sp, bp ; close stack frame
pop bp ; re-store the previous stack frame
ret
ENDP
;--------------------------------------------;
; Global variables
;--------------------------------------------;
result dw 0
num0 dw 2
num1 dw 10
;--------------------------------------------;
; Main
;--------------------------------------------;
main:
push offset result
push num0
push num1
call max
add sp, 6
mov ax, result
call print_num
mov ah, 0
int 16h
ret