assembly 组装时交换

r7s23pms  于 10个月前  发布在  其他
关注(0)|答案(2)|浏览(72)

我在汇编语言上写了swap,但我不确定我的代码是否正确,这是代码

swap:  mov r1, -(sp)   

   mov (sp) r1
   mov 2(sp) (sp)
   mov r1 2(sp)

   mov (sp)+, r1
   rts pc

字符串
交换从堆栈接收指针

92dk7w1h

92dk7w1h1#

sp是stackpointer吗?通常有一个命令ldw rA, 0(rB)(0是偏移量,rB是你将要加载的地址,实际数据现在在rA中)。ldw加载一个完整的字到内存中,ldb加载一个字节,stw rA, 0(rB)存储一个字。mov通常将一个寄存器复制到另一个寄存器。

lymnna71

lymnna712#

此代码:

mov #1,-(sp)
    mov #2,-(sp)
    jsr pc,swap
    halt

swap:              
    mov 2(sp),-(sp)  ; a,b,ret -> a,b,ret,b
    mov 6(sp),4(sp)  ; a,b,ret,b -> a,a,ret,b
    mov (sp)+,4(sp)  ; a,a,ret,b -> b,a,ret
    rts pc

字符串
最好为数据堆栈使用另一个寄存器

相关问题