鱼C论坛

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

各位大神求救求救,明天就要交

[复制链接]
发表于 2016-12-19 13:18:11 | 显示全部楼层 |阅读模式

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

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

x
编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“The bell is ring!”。
  1. DATA        SEGMENT
  2. COUNT        DW   1
  3. MESS        DB   'The bell is ring!', 0DH,0AH,'$'
  4. DATA        ENDS
  5. CODE        SEGMENT
  6.         ASSUME  CS:CODE, DS:DATA, ES: DATA
  7. MAIN        PROC  FAR
  8. START:   PUSH        DS
  9.         SUB        AX,AX
  10. PUSH        AX
  11.         MOV        AX,DATA
  12.         MOV        DS,AX
  13.         MOV        AL,1CH                ;取中断向量
  14.         MOV        AH,35H
  15.         INT        21H
  16. PUSH        ES                ;存原中断向量段址
  17. PUSH        BX            ;存原中断向量偏移量
  18. PUSH        DS
  19. MOV        DX,OFFSET ring;新偏移量送DX
  20. MOV        AX, SEG  ring
  21. MOV        DS,AX                ;新段址送DS
  22. MOV        AL, 1CH
  23. MOV        AH, 25H
  24. INT           21H                ;写入新的中断向量
  25. POP           DS
  26. IN           AL,21H                ;读取中断屏蔽字
  27. AND        AL, 11111110B        ;允许定时器中断
  28. OUT        21H, AL
  29. STI                        ;开中断
  30. MOV        DI, 2000
  31. DELAY:MOV   SI,3000                ;延时
  32. DELAY1:DEC        SI
  33.        JNZ  DELAY1
  34.                   DEC  DI
  35.                   JNZ  DELAY
  36.                   POP  DX        ;恢复原中断向量
  37.                   POP  DS
  38.                   MOV  AL,1CH
  39.                   MOV  AH,25H
  40.                   INT  21H
  41. RET
  42. MAIN   ENDP
  43. ring:PROC NEAR
  44.         PUSH        DS       
  45.         PUSH        AX
  46.         PUSH        CX
  47.         PUSH        DX
  48.         MOV        AX,DATA
  49.         MOV        DS,AX
  50. STI                ;开中断
  51.         DEC        COUNT        ;计秒值
  52.         JNZ        EXIT
  53.         MOV        DX, OFFSET  MESS
  54.         MOV        AH,09H
  55.         INT        21H
  56.         MOV        DX,100
  57.         IN        AL,61H
  58.         AND        AL,0FCH
  59. SOUND:   XOR        AL,02
  60.         OUT        61H,AL;扬声器发声
  61.         MOV        CX,140H
  62. WAIT1:LOOP        WAIT1;延时等待
  63.         DEC        DX
  64.         JNE        SOUND
  65.         MOV        COUNT,182
  66. EXIT: CLI        ;关中断
  67.         POP        DX
  68.         POP        CX
  69.         POP        AX
  70.         POP        DS
  71.         IRET        ;中断返回
  72. ring ENDP
  73. CODE ENDS
  74.        END        START
复制代码


调试结果

调试结果

错误的行数

错误的行数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-19 13:19:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-21 21:29:21 | 显示全部楼层
43行:ring后面多了:号

其实,我看不懂你的程序,只是对比上面MAIN PROC FAR和ENDP的表示方式得出的结论……

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-21 21:33:57 | 显示全部楼层
我…………论坛卡了下就连发了…………
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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