一个很简单的问题

cctv31942545 2004-11-21 03:28:23
我编写了一个很简单的程序 功能是 输入一个字符串 回显这个字符串
编译没错 就是执行不到效果
大家来帮我看看
DATA SEGMENT
numbuf DB 40
numac DB 0
char DB 41 DUP(?)
msg1 DB 'please input the string',0dh,0ah,'$'
msg2 DB 0dh,0ah,'the contents of the buffer','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,09h
MOV DX,OFFSET msg1
INT 21h
MOV DX,OFFSET numbuf

MOV AH,0ah
INT 21h
MOV DX,OFFSET msg2
MOV AH,09h
INT 21h
MOV DX,OFFSET char
MOV AH,09h
INT 21h

EXIT: MOV AH,4ch
INT 21h
CODE ENDS
END START
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cctv31942545 2004-11-22
  • 打赏
  • 举报
回复
但我在中间加上
xor bx,bx
mov bl,numac
inc bl
mov char[bx],'$'

这样也可以把
ovmem 2004-11-22
  • 打赏
  • 举报
回复
怎么你自己不试一试呢?
ovmem 2004-11-21
  • 打赏
  • 举报
回复
对不起,OK:后的第一句多余了
ovmem 2004-11-21
  • 打赏
  • 举报
回复
我改成这样,成功了

jmp start
char DB 40,0,41 DUP(?)
msg1 DB 'please input the string',0dh,0ah,'$'
msg2 DB 0dh,0ah,'the contents of the buffer',0dh,0ah,'$'

START:
MOV AH,09h
MOV DX,OFFSET msg1
INT 21h
MOV DX,OFFSET char
MOV AH,0ah
INT 21h
MOV DX,OFFSET msg2
MOV AH,09h
INT 21h

xor si,si
COMP:
cmp char[si],0dh
je OK
inc si
jmp COMP
OK:
mov char[si],0dh
inc si
mov char[si],0ah
inc si
mov char[si],'$'
mov dx,offset char+2
mov ah,09h
int 21h
EXIT:
MOV AH,4ch
INT 21h

关键是char中你输入的最后一个是回车 0Dh 而紧接着不是结束的符'$',所以调用显示字符串的中断时本来要显示的字符都被char中后面的一大串 00h 的显示所覆盖了

21,458

社区成员

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

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