用汇编语言编写程序段,将STRING1中的最后20个字反序符移到STRING2中

用汇编语言编写程序段,将STRING1中的最后20个字符反序移到STRING2中,上面的错了

先用PUSH指令将20个字符正续压入堆栈,然后用POP指令正续弹出到SPRING2中不就可以了追问

能不能详细点,程序段?谢谢高手!

追答

assume cs:codesg,ds:datasg,ss:stacksg

datasg segment
'源字符串
STRING1 db 'welcome to masm!welcome to masm!'
'要复制到的位置
STRING2 db 20 dup (0)
datasg ends

stacksg segment
'堆栈,暂存空间
db 20h dup (0)
stacksg ends

codesg segment
'初始化数据段和堆栈段
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
'将堆栈指针指向栈底
mov sp,14h

'获得待复制字符串的起始位置
lea si,STRING2
sub si,14h
lea di,STRING2
'初始化计数器
mov cx,14h

'按顺序压入堆栈
a: push [si]
inc si
loop a

'按顺序倒序输出
mov cx,14h
b: pop [di]
inc di
loop b

mov ax,4c00h
int 21h
codesg ends

end start

温馨提示:答案为网友推荐,仅供参考