汇编网首页登录博客注册
lghstock的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2008-08-14 00:36] 实验16中断的演示程序

图片载入中
assume cs:code,ds:data,ss:stack
data segment 
  a db 'shuru error!'
  b db '0-qingping',0
  c db '1-qianjingse',0
  d db '2-beijingse',0
  e db '3-shangyihang',0
  f db '4-tuichu',0
  g db 'input:',0
  h db 0B,02,03,04,05
  k dw offset b,offset c,offset d,offset e,offset f,offset g
data ends

stack segment
    db 128 dup (0)
stack ends

code segment
start:mov ax,data
      mov ds,ax
      mov ax,stack
      mov ss,ax
      mov sp,128

setrun:call show   ;显示功能说明
 
      mov ah,2    ;置光标调用int-10h功能
      mov bh,0    ;第0页
      mov dh,14   ;dh中放行号
      mov dl,36   ;dl中放列号
      int 10h
   
 shuru:in al,60h
       mov bx,0
       mov cx,5
shurus:cmp byte ptr ds:h[bx],al
       je srok
       inc bx
       loop shurus
       
       call sub1    ;显示出错信息   
       jmp shuru
 
 srok:mov ah,bl
      cmp ah,4
      je over     
      int 7ch
      call delay
      jmp setrun

 over:mov ax,4c00h
      int 21h
      
;---------第6行中间显示出错信息子程序-----------
 sub1:push si      
      push es
      push ax
      push cx
    
      mov si,0b800h
      mov es,si
      mov si,6*160+64     ;在屏幕第6行中间显示出错信息
      mov di,0
      mov cx,12
      mov ah,04h
sub1s:mov al,byte ptr ds:a[di]
      mov word ptr es:[si],ax
      inc di
      add si,2
      loop sub1s

      call delay

      mov si,6*160+64     ;在屏幕第6行中间清除出错信息
      mov cx,12
sub1s1:mov byte ptr es:[si],02h    ;用空格覆盖
      add si,2
      loop sub1s1
     
      pop cx
      pop ax
      pop es
      pop si
      ret

;-------功能说明显示子程序--------
 show:push si      
      push es
      push ax
      push cx
      push bp
      push bx
      push di
    
      mov si,0b800h
      mov es,si
      mov bp,9*160     ;在屏幕第9行开始中间显示功能说明
      mov bx,offset k

       mov ah,02h
       mov cx,6
showss:push bx
       mov bx,ds:[bx]
       mov di,0
       mov si,60 
 shows:mov al,byte ptr ds:[bx][di]
       cmp al,0
       je showok
       mov word ptr es:[bp][si],ax
       inc di
       add si,2
       jmp shows
showok:pop bx
       add bx,2 
       add bp,160
       loop showss
   
        pop di
        pop bx
        pop bp
        pop cx
        pop ax
        pop es
        pop si
        ret
;--------延迟子程序----------
delay:push ax
      push dx
      mov dx,5h
      mov ax,0
  ycs:sub ax,1
      sbb dx,0
      cmp ax,0
      jne ycs
      cmp dx,0
      jne ycs
      pop dx
      pop ax
      ret
     
code ends
end start
评论次数(4)  |  浏览次数(540)  |  类型(汇编作业) |  收藏此文  | 

[  app   发表于  2008-08-14 22:53  ]

程序有些问题,当第一次运行时,只有4可以运行,之后再运行,无法输入数字选项。

[  lghstock   发表于  2008-08-15 19:27  ]

你的中断出问题了,我第一次调也是!

[  lghstock   发表于  2008-08-15 19:31  ]

你的中断例,参考以下我的,看看是不是程序的入口和标号的默认问题!!

[  lghstock   发表于  2008-08-15 19:32  ]

4是退出,0~3是功能4不涉及中断!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码