鱼C论坛

 找回密码
 立即注册
查看: 3390|回复: 3

[已解决]各位大神,请问dos 2号功能调用输出的结果为什么会覆盖9号功能输出的结果?求解

[复制链接]
发表于 2017-11-26 10:04:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 server_test 于 2017-11-26 10:14 编辑
data segment 
intip db "please intput number:$",0ah,0dh
indata db 12,0,12 dup(0)
data1  db "0dog      "
          db "1am       "
          db "2a        "
          db "3love     "
          db "4I        "
          db "5is       "
          db "6pig      "
          db "7my       "
          db "8and      "
          db "9gaan   "          
data ends 
code segment 
     assume cs:code,ds:data
         start:mov ax,data           ;寄存器初始化
               mov ds,ax
                   lea dx,intip           ;输入提示
                   mov ah,9
                   int 21h
                   lea dx,indata        ;把indata的偏移地址放入dx 
                   mov ah,0ah
                   int 21h
                   lea di,indata+1     ;di指向indata的首地址
                   lea si,data1          ;si指向data1的首地址
                   mov al,[di]
                   cbw
                   mov cx,ax
                   inc di
          comc:push cx
               mov cx,10
          comr:mov dl,[di]         
               mov al,[si]
                   cmp dl,al           ;number匹配,ZF=0
                   jz next2
               add si,10
               loop comr
     next1:inc di
                   lea si,data1 
           pop cx           
           loop comc
           jmp finish                   
     next2:mov cx,10
               mov bx,1                ;bx置位
          char:mov dl,[si+bx]      ;输出显示字符串                     
                 mov ah,2
                 int 21h
                 inc bx 
                 mov al,dl
           cmp al,20h                ;ZF置1,识别空格                               
                   loopnz char 
           jmp next1
    finish:mov ah,4ch
               int 21h
code ends 
     end start
         
        
最佳答案
2017-11-26 15:41:35
将第2行改为:

intip db "please intput number:",0ah,0dh,"$"

不会被覆盖。

应该是int 21h的“0ah”功能最后输入回车符的时候,光标位置回到行首。

因此,再次显示的时候从行首开始显示,因此覆盖了原来显示的内容。
TIM截图20171126100126.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-26 15:41:35 | 显示全部楼层    本楼为最佳答案   
将第2行改为:

intip db "please intput number:",0ah,0dh,"$"

不会被覆盖。

应该是int 21h的“0ah”功能最后输入回车符的时候,光标位置回到行首。

因此,再次显示的时候从行首开始显示,因此覆盖了原来显示的内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-26 20:27:20 | 显示全部楼层
兰陵月 发表于 2017-11-26 15:41
将第2行改为:

intip db "please intput number:",0ah,0dh,"$"

谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-26 20:51:03 | 显示全部楼层

一起学习,一起进步。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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