注册 登录
编程论坛 汇编论坛

响铃

蓝薇 发布于 2007-12-05 12:52, 1239 次点击
输入1到9 响铃相应的次数
data segment
 array db 1,2,3,4,5,6,7,8,9
data ends
code segment
main proc far
assume cs:code,ds:data
start:
  push ds
  sub bx,bx
  push bx
  mov ah,01
  int 21h
  sub al,30h
  cmp al,0
  je exit
  mov si,0
l:
   cmp al,array[si]
   jne m
   jmp n
m:
  inc si
  jmp l
n:
  mov dl,07h
  mov ah,02
  int 21h
  dec si
  jnz n
exit:
      ret
      main endp
      code ends
      end start
(不知为什么总是响一次,各位帮帮忙,先谢谢喽)
1 回复
#2
zhulei19782007-12-05 14:57
每两次响铃之间的时间间隔很短,所以分辨不出响了几次,加个延时
data segment
array db 1,2,3,4,5,6,7,8,9
data ends
code segment
main proc far
assume cs:code,ds:data
start:
  push ds
  sub ax,ax
  push ax
  mov ax,data
  mov ds,ax
  mov ah,01
  int 21h
  sub al,30h
  cmp al,0
  je exit
  mov si,offset array
l:
   cmp al,[si]
   jne m
   inc si
   jmp n
m:
  inc si
  jmp l
n:
  mov dl,07h
  mov ah,02
  int 21h
  
mov cx,5000h
loop1:push cx
mov cx,0ffffh
loop2: loop loop2
pop cx
loop loop1
  dec si
  jnz n
exit:
      ret
      main endp
      code ends
      end start

[[italic] 本帖最后由 zhulei1978 于 2007-12-5 16:29 编辑 [/italic]]
1