鱼C论坛

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

为什么第二次运行就没反应

[复制链接]
发表于 2012-9-11 14:59:54 | 显示全部楼层 |阅读模式
4鱼币
本帖最后由 肥马时代 于 2012-9-12 10:08 编辑

学到直接定址表,突发奇想,结合端口,想在屏幕中间显式输入的0-9数字,于是写了下面的程序
;testins
assume cs:code,ds:data
;----------------------------------------
;data
;----------------------------------------
data segment
   ascii   db '0123456789'
   passcode db  0bh,02h,03h,04h,05h,06h,07h,08h,09h,0ah;这里存了0-9的通码
                         ;  0       1    2      3   4      5     6    7     8     9

data ends
;----------------------------------------
;code
;----------------------------------------
code segment
   s: mov ax,data
      mov ds,ax
      mov ax,0b800h
      mov es,ax

;读键盘
      next:
      in al,60h
      cmp al,1ch;如果按下enter就退出
;检查通码
      mov cx,10
       mov bx,0
    f: cmp al,passcode[bx]
       je copy ;找到了就copy到显存
      inc bx ;这条不是就比较下一条(一共10条)
      loop f
; 循环结束说明0-9没有被按下
      jmp short next;就继续读键盘
copy:
      mov al,ascii[bx]
;在屏幕中间显式
      mov es:[160*12+40*2],al

      jmp short next
exit:
mov ax,4c00h
int 21h
code ends
end s

问题就是:我这个程序可以运行,但是在dos窗口只能运行一次,第二次敲进去没有反映,关掉重新打开dos窗口又能运行,请问这是什么情况

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-9-12 10:08:46 | 显示全部楼层
各位大大们,帮帮忙啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-14 08:01:24 | 显示全部楼层
。。。这个。。你少了个退出的je吧。。。je exit。
其他的我也不知道。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-14 08:06:12 | 显示全部楼层
来帮你顶一下吧。。。不过注意一个细节哦,你发现没有你输入的东西在dos的命令行窗口也出现了,就是说命令行在你程序运行后居然读到了你程序运行中输入的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-19 15:42:47 | 显示全部楼层
谢谢啊,我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-19 16:31:43 | 显示全部楼层
还是不行,不过我现在学到后面了,可以从键盘缓冲区读字符了,这样就不用这样处理了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-16 10:21:32 | 显示全部楼层
过来学习一下。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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