汇编语言 每隔5s显示信息

发布网友 发布时间:2022-04-22 10:02

我来回答

2个回答

热心网友 时间:2023-09-21 01:43

以下是不采用中断的程序。供参考。

 
       DATAS  SEGMENT
     MESSAGE  DB        'The message is ABC'
              DB        0DH,0AH,'$'
       DATAS  ENDS

       CODES  SEGMENT
              ASSUME    CS:CODES,DS:DATAS
      START:
              MOV       AX,DATAS
              MOV       DS,AX
              MOV       DX,OFFSET MESSAGE
              MOV       CX,5        ; 循环5次
         @1:
              MOV       AH,9
              INT       21H
              MOV       AX,18*5
              CALL      DELAY_PROC
              LOOP      @1

              MOV       AX,4C00H    ; 返回DOS,主程序结束
              INT       21H

  DELAY_PROC  PROC      NEAR        ; 延迟子程式,  延迟   ax/18秒
              PUSH      ES
              PUSH      DX
              MOV       DX,40H
              MOV       ES,DX
              MOV       DX,ES:[006CH]           ;取系统1/18秒计数
              ADD       DX,AX       ; 延时 x/18
    DELAY10:
              CMP       ES:[006CH],DX           ;时限到了?
              JBE       DELAY10     ;没
              POP       DX
              POP       ES
              RET
  DELAY_PROC  ENDP
  
       CODES  ENDS
              END       START

热心网友 时间:2023-09-21 01:44

好久没有玩过汇编了,我猜代码是不是只执行一次,就结束了,里面已经包含了显示和延时,那你在最后加一个jmp START 是不是就实现了5秒一次?死循环,也可以做一个变量递减到零就退出吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com