鱼C论坛

 找回密码
 立即注册
查看: 4809|回复: 6

[已解决]程序有问题,请指点一下

[复制链接]
发表于 2021-5-25 15:13:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 肖-肖 于 2021-5-25 17:41 编辑

想着:
       从键盘输入一串字符,在字符串尾插入“$”,并显示该字符串
我弄的代码是:

DATAS SEGMENT
    BUFSIZE DB 30H        ;
    ACTLEN DB ?                ;实际输入的字符数
    CHARS DB 30H DUP(?)        ;实际输入的字符从此开始存放
DATAS ENDS

STACKS SEGMENT
    ;堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
        mov dx,offset BUFSIZE        ;输入缓冲区
        mov ah,0AH        ;10号功能号
        INT 21H                ;
        XOR CX,CX        ;清cx为0
        mov cl,ACTLEN        ;取得输入的字符个数
        mov dx,offset CHARS        ;输入的字符串起始地址送DX
        mov bx,dx        ;将字符串首地址送bx
        add bx,cx        ;得到字符串尾地址
        mov BYTE PTR[bx],'$'
        mov ah,09H        ;字符串显示功能
        INT 21H                ;显示输入的字符串
        MOV AH,4CH        ;调用返回DOS功能
        INT 21H                ;返回DOS
CODES ENDS
    END START


运行结果是:[/b]
    问1.png
问题是我只是输入了数据,并没有输出数据啊!!! 请指点一下,请说的详细些,最好加上示例代码,谢谢~
最佳答案
2021-5-25 17:56:54
调试了一下,发现确实是输出了字符串,不过是在 0 的位置输出的,正好替换掉输入在屏幕上的那个字符串,所以看起来像没有输出
换一行就看出来了
DATAS SEGMENT 
    BUFSIZE DB 30H        ;
    ACTLEN DB ?                ;实际输入的字符数
    CHARS DB 30H DUP(?)        ;实际输入的字符从此开始存放
DATAS ENDS

STACKS SEGMENT
    ;堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
        mov dx,offset BUFSIZE        ;输入缓冲区
        mov ah,0AH        ;10号功能号
        INT 21H                ;
        mov dl, 0ah
        mov ah, 02h
        int 21h
        XOR CX,CX        ;清cx为0
        mov cl,ACTLEN        ;取得输入的字符个数
        mov dx,offset CHARS        ;输入的字符串起始地址送DX
        mov bx,dx        ;将字符串首地址送bx
        add bx,cx        ;得到字符串尾地址
        mov BYTE PTR[bx], '
        ;mov dx,offset CHARS
        mov ah,09H        ;字符串显示功能
        INT 21H                ;显示输入的字符串
        MOV AH,4CH        ;调用返回DOS功能
        INT 21H                ;返回DOS
CODES ENDS
END START
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-25 17:37:13 | 显示全部楼层
第 26 行有问题,编译报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-25 17:42:46 | 显示全部楼层
人造人 发表于 2021-5-25 17:37
第 26 行有问题,编译报错


代码格式我不弄了,一改上一秒还是好的,一点保存就坏了,我不会弄了
直接这么粘吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-25 17:56:54 | 显示全部楼层    本楼为最佳答案   
调试了一下,发现确实是输出了字符串,不过是在 0 的位置输出的,正好替换掉输入在屏幕上的那个字符串,所以看起来像没有输出
换一行就看出来了
DATAS SEGMENT 
    BUFSIZE DB 30H        ;
    ACTLEN DB ?                ;实际输入的字符数
    CHARS DB 30H DUP(?)        ;实际输入的字符从此开始存放
DATAS ENDS

STACKS SEGMENT
    ;堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
        mov dx,offset BUFSIZE        ;输入缓冲区
        mov ah,0AH        ;10号功能号
        INT 21H                ;
        mov dl, 0ah
        mov ah, 02h
        int 21h
        XOR CX,CX        ;清cx为0
        mov cl,ACTLEN        ;取得输入的字符个数
        mov dx,offset CHARS        ;输入的字符串起始地址送DX
        mov bx,dx        ;将字符串首地址送bx
        add bx,cx        ;得到字符串尾地址
        mov BYTE PTR[bx], '
        ;mov dx,offset CHARS
        mov ah,09H        ;字符串显示功能
        INT 21H                ;显示输入的字符串
        MOV AH,4CH        ;调用返回DOS功能
        INT 21H                ;返回DOS
CODES ENDS
END START
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-25 17:58:04 | 显示全部楼层
肖-肖 发表于 2021-5-25 17:42
代码格式我不弄了,一改上一秒还是好的,一点保存就坏了,我不会弄了
直接这么粘吧

配上背景以后,这样也不错
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-25 18:24:08 | 显示全部楼层
人造人 发表于 2021-5-25 17:56
调试了一下,发现确实是输出了字符串,不过是在 0 的位置输出的,正好替换掉输入在屏幕上的那个字符串,所 ...

嗯嗯 原来如此
提交1.png
我看了下那个DOS的功能调用表
02H是显示器输出
当我想要问为什么是mov dl,0aH的时候
这时候我想起了9号功能有时候也有回车和换行,分别是0DH和0Ah
这下我就明白了呀!
感谢 感谢
我还有一道题,有时间再看下吧,指点下我 嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-25 18:25:41 | 显示全部楼层
人造人 发表于 2021-5-25 17:58
配上背景以后,这样也不错
^_^

我也这么觉得 哈哈 ^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 10:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表