有关输出字符串的问题

54lem 2003-09-12 05:27:52
;***************************************
data segment
ddd db 20,?,20 dup(?)
db 0dh,0ah,'$'
data ends
;***************************************
stack segment stack
db 100 dup(?)
stack ends
;***************************************
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov ah,0ah
mov dx,offset ddd
int 21h

mov ah,9
mov dx,offset ddd+2
int 21h

mov ax,4c00h
int 21h
code ends
end start


这段代码原本是想输出用户所输入的字符串的
然而,却不能达到目的,大家给看看,问题出在哪里,应该如何解决
先谢谢了
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
54lem 2003-09-17
  • 打赏
  • 举报
回复
该问题主要是在输入时最后一个字符是0dh
也就是回车,然而回车并不意味着换行而只是把光标置首
所以在输出时就会产生被覆盖的现象
如输入:
'adddffe',0dh
则没有输出,因为在输出了'adddffe'之后,又一个0dh使得光标置首
然后所输出的'adddffe'被后面的 ? 覆盖了
zxy1492 2003-09-12
  • 打赏
  • 举报
回复
;***************************************
data segment
ddd db 20,?,20 dup(?)
db 0dh,0ah,'$'
data ends
;***************************************
stack segment stack
db 100 dup(?)
stack ends
;***************************************
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov ah,0ah
mov dx,offset ddd
int 21h
mov ah,2
mov dl,0ah
int 21h
mov dl,0dh
int 21h
mov bl,ddd+1
mov bh,0
mov ddd+2[bx],byte ptr '$'

mov ah,9
mov dx,offset ddd+2
int 21h

mov ax,4c00h
int 21h
code ends
end start
改了一下可以了
54lem 2003-09-12
  • 打赏
  • 举报
回复
嗯,可以

还请说说原因
zhukeke 2003-09-12
  • 打赏
  • 举报
回复
这段程序本没有错。但数据区定义时加了20,?,数据输入时又加以覆盖,显示时又不从头显示,不知你要干什么?另外,不知你说的“总不能达到目的”具体指的是什么错误?
csdsjkk 2003-09-12
  • 打赏
  • 举报
回复
mov ah,0ah
mov dx,offset ddd
int 21h
后加:
mov si,dx
mov al,[si+1]
mov ah,0
add si,ax
mov byte ptr [si+2],24h
54lem 2003-09-12
  • 打赏
  • 举报
回复
哎,没有人帮忙啦

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧