高手请!汇编字符串输入再原样输出!

来源:百度知道 编辑:UC知道 时间:2024/07/08 02:07:46
一个字符串输入后为何无法原样输出,请指出我程序的错误:
(不要用循环输出单个字符来输出一个字符串,这个我会。但是我怎么也不能整串输出,这个程序运行后输出的是一段空白。)
data segment
string db 'Please input a string(include numbers):$'
buf db 10,?,10 DUP(?),'$'
CR db 0Dh,0Ah,'$'
data ends
code segment
main proc far
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov dx,offset string
mov ah,09h
int 21h

lea dx,buf
mov ah,0Ah
int 21h

mov dx,offset CR
mov ah,09h
int 21h

lea dx,buf
add dx,2h
mov ah,09h
int 21h

mov ah,4ch
int 21h
main endp
code ends
end start

org 0x100

buffer_size equ 0x40 ; 64字节

section .text

; ...
mov dx, str
mov ah, 0x9
int 0x21

; 输入
mov ah, 0xA
mov dx, buf
mov bx, dx
mov byte [bx], buffer_size
int 0x21

; 设置结束标记
mov si, [bx+1]
and si, 0xFF
mov byte [bx+si+2], '$'

; 换行
mov ah, 2
mov dl, 13
int 0x21
mov dl, 10
int 0x21

; 输出
mov dx, buf+2
mov ah, 0x9
int 0x21

mov ax, 0x4c00
int 0x21

section .data
str: db 'Enter a sequence of strings:$'

section .bss
buf: resb buffer_size