请注意:我知道该程序可能有多个错误而且编写得不好,我只是想学习
我的程序在8086中连接两个字符串,我的代码是: -
printmsg macro ms
mov ah,09h
lea dx,ms
int 21h
endm
printip macro ms
mov ah,09h
lea dx,ms+2
int 21h
endm
ipuser macro ms
mov ah,0ah
lea dx,ms
int 21h
endm
code segment
assume cs:code, ds:data
mov dx,data
mov ds,dx
printmsg ms1
ipuser input1
printmsg ms2
ipuser input2
lea si,input1+2
up: cmp [si],byte ptr '$'
je done
inc si
jmp up
done: lea di,input2+2
lbl: mov dl,[di]
mov [si],dl
cmp [si],byte ptr '$'
je endpr
inc di
inc si
loop lbl
endpr: printmsg ms3
printmsg nl
printip input1
mov ah,4ch
int 21h
code ends
data segment
ms1 db 10,13,'Enter first string:$'
ms2 db 10,13,'Enter second string:$'
ms3 db 10,13,'Concatenated string is:$'
nl db 0dh,0ah,'$'
input1 db 10 dup('$')
input2 db 10 dup('$')
data ends
end
我得到的输出是: -
Enter first string:mihir
Enter second string:kandoi
Concatenated string is:
kandoi
我想要的输出是: -
Enter first string:mihir
Enter second string:kandoi
Concatenated string is:
mihirkandoi
似乎有什么问题?我是字符串的新手
答案 0 :(得分:1)
您的程序看起来很好,除了使用loop
指令,您没有设置必要的CX寄存器!此外,您不需要此代码中的此说明。
lbl:
mov al,[di]
mov [si],al
cmp al, '$'
je endpr
inc di
inc si
jmp lbl <-- Change LOOP into JMP
endpr:
虽然这种修改/修正很重要,但它不应该治愈输出。我怀疑你的原始节目源中有一些拼写错误。