【发布时间】:2017-02-28 04:36:50
【问题描述】:
请注意:我知道程序可能有多个错误并且写得不好,我只是想学习
我的程序是在 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
似乎是什么问题?我是字符串新手
【问题讨论】:
-
在编写代码时请尽量遵循一些编码标准,尤其是汇编代码。在您的示例中,如果您用空行分隔函数并使用带有标签的缩进,这将非常有帮助。
-
看起来像文字墙......不会读进去。尝试重新格式化它,使用一些空行将逻辑部分组合在一起,使用缩进来区分指令和标签(标签从第一列开始是大约 40 年的习惯,指令缩进至少在第 4 列甚至更多,你可能不习惯,但几乎所有其他人都习惯了,只需检查一些汇编示例,了解什么是好的并使用它)。