鱼C论坛

 找回密码
 立即注册
查看: 3651|回复: 1

模拟 sleep 问题

[复制链接]
发表于 2017-5-5 18:48:36 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
大佬帮忙看看,运行的时候老是中途卡死,不知怎么回事!
代码如下:
assume cs:code

stack segment
    db 128 dup(0)
stack ends

code segment
start:    mov ax,stack
          mov ss,ax
                  mov sp,128
                  
                  call show_ch
                  
                  mov ax,4c00H
                  int 21H
;==========================================
show_ch:  push ax
          push es
                  push di
                  
          mov ax,0b800H
                  mov es,ax
                  mov di,160*12+40*2
                  mov al,'a'
print:    mov es:[di],al
          inc al
                  call delay
                  cmp al,'z'
                  jna print
                  
                  pop di
                  pop es
                  pop ax
                  
                  ret
;==========================================
delay:    push ax

          mov al,0
                  out 70H,al
                  in al,71H
                  mov ah,al
                  inc ah
                  mov al,0
                  
delay_s:  push ax
          out 70H,al
                  in al,71H
                  cmp al,ah
                  pop ax
                  jne  delay_s
                  
                  pop ax
                  ret
;==========================================
code ends
end start
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-5-7 14:09:43 | 显示全部楼层
你为什么不调试程序?


延时部分有问题,已经修复
  1. assume cs:code

  2. stack segment
  3.     db 128 dup(0)
  4. stack ends

  5. code segment
  6. start:
  7.         mov ax, stack
  8.         mov ss, ax
  9.         mov sp, 128

  10.         call show_ch

  11.         mov ax, 4c00H
  12.         int 21H
  13.        
  14. ;==========================================

  15. show_ch:
  16.         push ax
  17.         push es
  18.         push di

  19.         mov ax, 0b800H
  20.         mov es, ax
  21.        
  22.         mov di, 160*12+40*2
  23.         mov al, 'a'
  24. print:
  25.         mov es:[di],al
  26.         inc al
  27.        
  28.         call delay
  29.        
  30.         cmp al, 'z'
  31.         jna print

  32.         pop di
  33.         pop es
  34.         pop ax
  35.         ret
  36.        
  37. ;==========================================

  38. delay:
  39.         push ax

  40.         mov al, 0
  41.         out 70H, al
  42.        
  43.         in al, 71H
  44.         mov ah, al
  45.        
  46. delay_s:
  47.         mov al, 0
  48.         out 70H, al
  49.        
  50.         in al, 71H
  51.         cmp ah, al
  52.         je  delay_s

  53.         pop ax
  54.         ret
  55.        
  56. code ends

  57. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 15:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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