⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xiong.asm

📁 微机原理课程设计汇编语言打字计时练习 大家可以
💻 ASM
字号:
.386
data segment
fn db 'F:\123.txt',0
res db 100 dup(?)
dbuffer db 10 dup(':') ;存放时间
buf db 'game over,the time is:',0ah,0dh,'$'
buf1 db 'do you want go on(Y/N)',0ah,0dh,'$'
buf2 db 'the error is:',0ah,0dh,'$'
buf3 db '                                 This is a exercise                                              ',0ah,0dh
     db '                                Do you want to start                                             ',0ah,0dh
     db '                                $'
buf4 db 'return--R',0ah,0dh
     db 'return to dos--D',0ah,0dh,'$'
buf5 db 'You pressed the wrong button,please input it again!',0ah,0dh,'$'
data ends
code segment   use16
     assume cs:code,ds:data
start:mov ax,data
      mov ds,ax
      mov es,ax
    d:call clear1     ;清屏
      mov ah,02h      ;设置光标位置
      mov bh,00h
      mov dh,07h
      mov dl,00h
      int 10h
      lea dx,buf3        ;输出提示符
      mov ah,09h
      int 21h
      mov ah,01h
      int 21h
      cmp al,'Y'
      jz c
      jmp d
    c:call clear     ;清屏
      mov ax,3d00h         ;打开文件
      lea dx,fn
      int 21h
      push ax
      mov ah,2ch          ;读取百分秒
      int 21h
      pop ax
      mov bx,ax              ;设置文件指针
      push ax
      and cx,0
      and dh,0
      mov ax,4200h
      int 21h
      mov ah,2ch           ;再次读取百分秒
      int 21h
      pop ax
      mov bx,ax       ;读取字符串
      mov ch,0
      mov cl,dl
      lea dx,res
      mov ah,3fh
      int 21h
      mov si,ax           ;设置结束符
      mov res[si],'$'
      mov ah,02h      ;设置光标位置
      mov bh,00h
      mov dh,00h
      mov dl,00h
      int 10h
      lea dx,res
      mov ah,09h
      int 21h
      call hui
      lea si,res
      and cx,0             ;初始时间置零
      and dx,0
      mov ah,2dh
      int 21h
      and cl,0             ;错误数量置零
    b:mov ah,08h            ;输入字符串
      int 21h
      cmp al,[si]
      jz a
      inc cl
      jmp b
    a:call lp             ;显示输入
      inc si
      cmp byte ptr [si],'$'
      jnz b
      push cx
      mov si,0             ;读取时间
      mov ah,2ch
      int 21h
      and ah,0
      mov al,cl              ;分钟转换
      call sub1
      and ah,0
      mov al,dh              ;秒转换
      call sub1
      and ah,0
      mov al,dl              ;百分秒转换
      call sub1
      call hui
      lea dx,buf
      mov ah,09h
      int 21h
      lea bp,dbuffer   ;显示时间
      mov dx,0300h
      mov cx,8
      mov bx,005fh
      mov ax,1301h
      int 10h
      call hui
      lea dx,buf2              ;显示错误数量
      mov ah,09h
      int 21h
      pop cx
      mov al,cl                ;计算错误数量
      cbw
      mov bl,10
      div bl
      mov bh,ah
      add al,30h
      mov dl,al
      mov ah,02h
      int 21h
      add bh,30h
      mov dl,bh
      mov ah,02h
      int 21h
      call hui
      lea dx,buf1        ;重新开始
      mov ah,09h
      int 21h
    h:mov ah,01h
      int 21h
      cmp al,'Y'
      jz c
      cmp al,'N'
      jz e
      call hui
      lea dx,buf5
      mov ah,09h
      int 21h
      jmp h
    e:call hui
      lea dx,buf4
      mov ah,09h
      int 21h
    g:mov ah,01h
      int 21h
      cmp al,'R'
      jz d
      cmp al,'D'
      jz f
      call hui
      lea dx,buf5
      mov ah,09h
      int 21h
      jmp g    
    f:mov ah,4ch
      int 21h
   lp proc
      mov dl,al
      mov ah,02h
      int 21h
      ret
   lp endp
  hui proc                 ;光标换行子程序
      mov dl,0ah
      mov ah,02h
      int 21h
      mov dl,0dh
      int 21h
      ret
  hui endp
  sub1 proc                     ;时间asc码转换
      mov bl,10
      div bl
      add al,'0'
      mov dbuffer[si],al
      inc si
      add ah,'0'
      mov dbuffer[si],ah
      inc si
      inc si
      ret
 sub1 endp 
 clear proc                    ;清屏子程序
      mov ax,0600h
      mov bh,3ah
      mov cx,0
      mov dx,5050h
      int 10h
      ret
 clear endp
 clear1 proc                    ;清屏子程序
      mov ax,0600h
      mov bh,8ch
      mov cx,0
      mov dx,5050h
      int 10h
      ret
 clear1 endp
      
     
code ends
end start
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -