assembly 我可以在一个proc中推送和调用一个proc吗?

fruv7luv  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(112)

我想在另一个proc中调用一个proc。从内部的proc必须在之前推送,内部proc有ret 4。当我运行它时,我的计算机停止工作有什么方法可以做到这一点吗?也许添加另一个pop?我想改变颜色的值。

proc borders ;the out proc , before calling I pushed offset head
push bp
mov bp,sp
push ax dx di si
        mov di, [bp+4] ; offset of head
        mov si, [di] ; value of head
        sub si, 158
        push offset color
        call random ; the in proc
        mov [di], si
        pop si di dx ax bp
ret 4
endp borders

proc random ;before used I pushed offset color
push bp
mov bp,sp
  push ax bx dx 
  push ds          
  xor  dx, dx      ; The word-sized `DIV` division requires initiating
  mov  ds, dx
  mov  ax, [046Ch] ; read timer counter
  pop  ds
  xor  ax, [cs:bx] ; XOR counter and a WORD from memory
  mov  bx, 2000    ; limit : 0-3998
  div  bx          ; DX:AX / BX -> Remainder in DX is [0,1999]
  shl  dx, 1       
  mov  bx, [bp+4] ; changes the value of food/color depend on use.
  mov [bx], dx
  pop  dx bx ax bp
  ret 4
endp random
jbose2ul

jbose2ul1#

当然可以。如果你需要一个递归函数,proc甚至可以调用它自己。

相关问题