sdnyzjzx 发表于 2010-12-29 21:50:09

汇编写 c = add(a,b) + sub(a,b) 修改版

本帖最后由 sdnyzjzx 于 2010-12-29 21:54 编辑

用汇编多次写了下这个题目的代码,后来想,数据在主程序里已经入栈了,就可应该可以直接用,本着这个原则来修改的。修改后,在 add 与 sub 两个函数里,寻址的偏移稍微麻烦了点,中间有个 sub sp,2 也要占一个字节空间,这点开始是没想到,所以没找对,后来观察了下堆栈,明白了,这样写法也不知道是好还是坏,刚开始写代码,也不懂,还请多多指教!assume cs:code

stack segment

        db 100h dup (0)

stack ends

code segment

fun_add:
      push bp
      mov bp,sp
      mov ax,
      mov dx,
      add ax,dx
        mov sp,bp
      pop bp
      ret

fun_sub:
      push bp
      mov bp,sp
      mov ax,
      mov dx,
      sub ax,dx
        mov sp,bp
      pop bp
      ret

fun_fun:
        push bp
      mov bp,sp
        sub sp,2        ;申请出了空间

        call fun_add
        mov ,ax
        call fun_sub
        add ax,
        mov sp,bp
        pop bp
        ret

start:        mov ax,stack
        mov ss,ax
        mov sp,100h

      mov ax,20h
      push ax
      mov ax,10h
      push ax
      call fun_fun
        add sp,4

      mov ax,4c00h
      int 21h

code ends

end start

Nisy 发表于 2010-12-30 13:41:06

这样 不通用哦这个函数 可以COPY到其他工程么
页: [1]
查看完整版本: 汇编写 c = add(a,b) + sub(a,b) 修改版