在ARM汇编程序如何实现子程序的返回

在ARM汇编程序如何实现子程序的返回,第1张

把对应的R14寄存器中的值 赋值给PC寄存器

在进入子程序的时候 保存一下当前的 预取指令的下一条指令的地址到LR(R14)寄存器,在子程序返回的时候把LR的值赋值给PC寄存器 就OK 了

code  segment

      assume cs:code

      org 100h

start:jmp begin

str1a db 100

str1n db ?

str1  db 100 dup(?)

char1 db ?

begin:push cs

      pop ds

      push cs

      pop es

      mov ah,10

      lea dx,str1a

      int 21h

      

      call lfcr

      mov ah,1

      int 21h

      mov byte ptr char1,al

      

      mov cl,str1n

      mov ch,0

      lea di,str1

      cld

      repne scasb

      cmp cx,0

      je @0

      inc cx

@0:

      call lfcr

      

      mov al,str1n

      sub al,cl

      mov cl,al

      mov ch,0

      lea si,str1

      cld

@1:

      lodsb

      mov dl,al

      mov ah,2

      int 21h

      loop @1

      mov ah,4ch

      int 21h

lfcr  proc near

      push ax

      push dx

      mov ah,2

      mov dl,13

      int 21h

      mov dl,10

      int 21h

      pop dx

      pop ax

      ret

lfcr  endp

code  ends

      end start


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11338381.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存