标题:不知道是什么意思,求大神查错,谢谢
取消只看楼主
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
结帖率:84.62%
已结贴  问题点数:20 回复次数:2 
不知道是什么意思,求大神查错,谢谢
;此程序是一个计时器,输入一个小于60的分钟数,然后从00:00(分:秒)开始显示,在21行处出错了,
data segment
m db 0 ;分钟
s db 0 ;秒钟
count db 18
buf byte '0'
data ends

code segment  ;代码段
assume cs:code,ds:data

CURSOR  MACRO ROW                       
    MOV AH,2
    MOV BH,0
    MOV DH,ROW
    MOV DL,60
    INT 10H
    ENDM

    display  macro  buf  ;数制的调整
   mov bl,buf  ;这一行报错,invalid character in file
   mov cl,4
   rol bl,cl
   mov dl,bl
   and dl,00001111b
   
   add dl,30h
   mov ah,2
     int 21h
   mov cl,4
   rol bl,cl
   mov dl,bl
   and dl,00001111b
   
   add dl,30h
     mov ah,2
   int 21h
   
  endm

   start:
          mov ax,data
          mov ds,ax
          mov ah,2            ;读取系统时钟  出口参数分别CH:CL:DH   
          int 1ah
          mov m ,cl              ;分钟放入minute
          mov s ,dh              ;秒放入second

          cursor 0
          call dsp
   
          mov al,1ch
          mov ah,35h
          int 21h
          push es
          push bx
          push ds
          mov  dx,offset timer
          mov  ax,seg timer
          mov  ds,ax
          mov  al,1ch
          mov  ah,25h
          int  21h
          pop  ds
          in   al,21h
          and  al,11111110b
          out  21h,al
     cyc:
       jmp cyc
       pop  dx
       pop  ds
       mov  al,1ch
       mov  ah,25
       int  21h
      
       mov ah,4ch
       int 21h
    dsp proc near
       push ax                ;输出时间
       push bx
    push cx
       push dx
    display m
    mov dl,':'
    int 21h
    display s
    pop dx
    pop cx
    pop bx
    pop ax
    ret;dsp返回
    dsp endp

    timer proc near        ;时钟中断
   
       push ax
       push dx
       mov ax,data
       mov ds,ax
       dec count
       jnz done
    mov al,s
       add al,1
       daa
       mov s ,al
    cmp s ,60h
    ; das
    jnz dis
    mov s ,0
    mov al,m
    add al,1
       daa
       mov m ,al
       cmp m ,60h
       ;das
       jnz dis
       jmp end start //结束程序
    daa
    dis:
    mov count,18
      
    cursor 0
    call dsp
    done:
    pop ax
    pop dx
    iret ;中断返回  
    timer endp
      
    mov ah,07h        ;键盘接收字符,07号调用无回显
    int  21h
    cmp al,0dh        ;与输入回车比较,相等跳转至clear(清屏)
    je clear
    ;mov ax,31h     ;终止并驻留    
    ;int 21h   
    clear:
    mov ah,0fh         ;取当前显示方式
    int 10h
    mov ah,00h         ;设置显示方式
    int 10h
    mov ah,4ch         ;返回DOS
    int 21h
  code ends
end start
搜索更多相关主题的帖子: display 计时器 count 
2014-01-09 19:47
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
得分:0 
是的,代码是从网上下载的,像1楼所说,确实是字符问题,我重新把代码敲了一遍,然后没语法错误了
2014-01-10 20:47
chuanglan
Rank: 2
等 级:论坛游民
威 望:2
帖 子:91
专家分:29
注 册:2012-8-14
得分:0 
回复 楼主 chuanglan
果然厉害,谢谢你的用心,
2014-01-10 20:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426336-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021282 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved