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

📄 hf5.asm

📁 运用汇编实现单词记忆器的功能
💻 ASM
字号:
stack 	segment stack
      	dw 100 dup(?)
stack 	ends
date  	segment
     	english  db 'please input the words'
	b1	 db 1000h dup('$')
        b2	 db 1000h dup('a')
	b3	 db 'I know this word',0ah,0dh,'$'
 	b4	 db 'I dont know this word',0ah,0dh,'$'
	b5	 db 'please insert 1 2 3or4',0ah,0dh,'$'
	x 	 db 0
	y	 db 0
	z	 dw 205eh
	b6	 db 1000h dup('$')
	r	 db 0
	b7	 db 'x','/','y',0ah,0dh,'$'
	b8	 db 'The rate of the right words is',0ah,0dh,'$'
	b9 	 db 'The following words are you do not know, please remember them agian',0ah,0dh,'$'
date 	ends
code 	segment
      	assume cs:code,ds:date,ss:stack
start:	mov ax,date
     	mov ds,ax
	mov ah,09h;显示字符串
	lea si, english
        mov dx,si
	int 21h 
        mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 
	lea di,b2;存入数据
	mov dx,di
        mov ah,0ah
  	int 21h
	

        lea di,b2;记录单词总个数
     v0:mov dl,[di]
        cmp dl,20h
        jz  v1
	cmp dl,0dh
	jz  v2
    v3: inc di
	jmp v0
     v1:inc y
	jmp v3
     v2:inc y

	mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 
	call zi1 
	call zi4;输出不认识的单词
	mov ah,4ch
	int 21h
zi1  	proc
	push ax
	push bx
	push cx
	push dx
	push si
	push di
	
        lea di, b2
	inc di
	inc di
     a3:mov ah,02h;输出第n个单词
	mov dl,[di]
	int 21h
	cmp dl,20h
	jz  l1
	cmp dl,0dh
	jz  l2
	inc di
	jmp a3
    l2: mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 
       
	mov dl,20h;最后一个单词处理
	mov [di],dl
	inc di
	mov dl,[di]
	mov dl,0dh
	mov [di],dl
	dec di
 	mov ah,01h;按键输入
	int 21h
	cmp al,'1'
	jnz l3
	mov ah,09h;显示认识
	lea si, b3
        mov dx,si
	int 21h 
	inc x;认识单词记数
	jmp a7
    l3: cmp al,'2'
	jnz a5
	call zi2;将不认识的单词存到B6所指单元
	mov ah,09h;显示不认识
	lea si, b4
        mov dx,si
	int 21h 
	jmp a7
     l1:mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 
			
    put:mov ah,01h;按键输入
	int 21h
	cmp al,'1'
	jnz a4
	mov ah,09h;显示认识
	lea si, b3
        mov dx,si
	int 21h 
	inc x;认识单词记数
	jmp oher
    a4: cmp al,'2'
	jnz a5
	call zi2;将不认识的单词存到B6所指单元
	mov ah,09h;显示不认识
	lea si, b4
        mov dx,si
	int 21h
	;inc y;单词记数
	jmp oher
    a5: cmp al,'3'
	jnz a6
	call zi2;将不认识的单词存到B6所指单元
   oher:inc di
	cmp dl,0dh;判断是否是最后一个单词  
	jz  a7
	jmp a3;指向下一个单词
	

	
     
     a6:cmp al,'4'
	jnz a8
	call zi3
        mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h
 noback:dec di
	mov dl,[di]
	cmp dl,20h
    	jz  back
	jmp noback
   back:inc di 
        jmp a3
     a8:mov ah,09h;显示请输入1,2,3或4
	lea si, b5
        mov dx,si
	int 21h 
	jmp put
   a7:  mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 
	lea si,x;将X,Y的值放入B7所指定的位置
	mov bl,[si]
	cmp bl,09h
	ja  p1
	add bl,30h
	jmp p2
     p1:add bl,37h
     p2:lea di,b7
	mov [di],bl
	inc di
	inc di  
	lea si,y
	mov bl,[si]
	cmp bl,09h
	ja  p11
	add bl,30h
	jmp p22
    p11:add bl,37h
    p22:mov [di],bl

	lea dx,b8;显示比率
	mov ah,09h
	int 21h
	lea  dx,b7
        mov  ah,09h
	int  21h
        pop di
	pop si
	pop dx
	pop cx
	pop bx
	pop ax
        ret
zi1	endp
zi2     proc
	push ax
	push bx
	push cx
	push dx
	push si
	push di	
	dec di
     m1:mov al,[di];退回到此单词首字母
	cmp al,20h
	jz  m2
	cmp al,40h
	jna m2
	dec di
	jmp m1
     m2:inc di
	lea si,b6;将不认识的单词放到B6所指单元
	mov si,z;保留SI的地址
     m4:mov al,[di]
	mov [si],al
	cmp al,20h
	jz  m3
	cmp al,0dh
	jz  m3
	inc si
	inc di
	jmp m4
     m3:inc si
	mov z,si;保留SI的地址
	pop di
	pop si
	pop dx
	pop cx
	pop bx
	pop ax
        ret
zi2	endp
zi3     proc
	push ax
	push bx
	push cx
	push dx
	push si
	push di	
	
	inc  r
      go: dec di;指向上一个单词
     upp:mov cl,[di]
	cmp cl,20h
	jz  upp1
	cmp cl,40h;判断是否是第一个单词
	jna upp2
        dec di
	jmp upp
    upp1:dec di
	mov cl,[di]
	cmp cl,20h
	jz  upp2
	cmp cl,40h;判断是否是第一个单词
	jna upp2
	jmp upp1
   upp2 :inc di
     c3:mov ah,02h;输出第n个单词
	mov dl,[di]
	int 21h
	cmp dl,20h
	jz  f1
	inc di
	jmp c3
    f1:mov ah,02h;回车换行
	mov dl,0dh
	int 21h
	mov ah,02h
	mov dl,0ah
	int 21h 	
     pu:mov ah,01h;按键输入
	int 21h
	cmp al,'1'
	jnz c4
	mov ah,09h;显示认识
	lea si, b3
        mov dx,si
	int 21h 
	jmp ohe
    c4: cmp al,'2'
	jnz c5
	mov ah,09h;显示不认识
	lea si, b4
        mov dx,si
	int 21h
	jmp ohe
    c5: cmp al,'3'
	jnz c6
    ohe:dec r
	inc di
	cmp r,0;判断是否是最后一个单词  
	jz c7
	jmp c3;指向下一个单词
  c6:cmp al,'4'
	jnz c8
	inc r;退到第几个单词
	jmp go
c8:mov ah,09h;显示请输入1,2,3或4
	lea si, b5
        mov dx,si
	int 21h 
	jmp pu
     c7:pop di
	pop si
	pop dx
	pop cx
	pop bx
	pop ax
        ret
zi3	endp 
zi4  	proc
	push ax
	push bx
	push cx
	push dx
	push si
	push di
	lea dx,b9;输出不认识的单词
	mov ah,09h
	int 21h
	lea dx,b6
	mov ah,09h
	int 21h
	
	pop di
	pop si
	pop dx
	pop cx
	pop bx
	pop ax
        ret
zi4	endp 
code	ends
	end start
       
	

⌨️ 快捷键说明

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