我的汇编语言代码有问题。
我们被要求提示用户输入字符串,我们应该再次显示它或将其回显到命令行。我们需要假设它最多只有 20 个字符(在字符串中)
这是示例输出:
输入一个字符串(最多 20 个字符)
012345678901234567890
您输入的字符串是:
012345678901234567890
当我在 DOSBOX 中运行我的代码时,我输入:0123456789 按下回车后,它向我显示了一堆看起来很奇怪的字符和符号......
这是我的代码:
.186
data segment
message1 db "Enter a string (max 20 char.): " ,13, 10, '$'
message2 db "The string you entered is: " , 13, 10, 'S'
myBStr db 20, 21 dup(?) ,'S'
data ends
stack1 segment stack
db 100 dup(?) ; This is the stack of 100 bytes
stack1 ends
code segment
assume cs:code, ds:data, ss:stack1
start:
mov ax, data
mov ds, ax
mov ax, stack1
mov ss, ax
lea dx, message1 ;load message to dx
mov ah, 9h ;show this message
int 21h
mov ah, 0Ah
lea dx, myBStr ;Load address of string
int 21h
mov ah, 9h ; show message of entered string
int 21h
lea dx, message2 ;load second message to dx
mov ah, 9h ;show this message
int 21h
mov ah, 0Ah
lea dx, myBStr ;Load address of string
int 21h
mov ah, 4ch ;Set up code to specify return to dos
int 21h
code ends
end start