单词记忆测试器程序设计

更新时间:2023-05-16 17:25:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理

STACK SEGMENT STACK

DB 50 DUP(0)

STACK ENDS

DATA SEGMENT

WORD1 DB 300 DUP(0)

WORD2 DB 20 DUP(0)

MSG0 DB 'THE NUMBER OF WORD YOU HAVE REMEBERED : $' MSG1 DB 'THE NUMBER OF WORD YOU HAVE NOT REMEBER :$ '

MSG2 DB 'PLEASE INPUT WORDS,END WITH END.PRESS ENTER TO

END INPUT AND START TEST!',0AH,0DH,'$'

MSG3 DB 'THE WORD YOU HAVE NOT REMEBERED:$'

MSG4 DB 'THE SOURCE WORD:$'

STR1 DB 0AH,'PERSS K OR U TO JUDGE IF YOU KNOW THIS

WORD!YOU CAN PRESS N OR L TO DISPLAY THE NEXT WORD!',0AH,'$'

STR2 DB 0AH,'PERSS N OR L TO CHOOSE THE NEXT WORD,PERSS O

IS JUMP OUT THE GAME!',0AH,'$'

RATE0 DB 'THE RIGHT RATE IS:$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE , DS:DATA, SS:STACK

START: MOV AX,DATA ;取数据段地址

MOV DS,AX

MOV CX,0

MOV DI,OFFSET WORD2

PUSH DI

MOV DX,OFFSET MSG2 ;调用中断显示字符串

MOV AH,09H

INT 21H

LEA SI,WORD1

INPUT: INC SI

MOV AH,01H ;输入单词

MOV DL,0FFH

INT 21H

MOV [SI],AL

CMP AL,0DH

JZ FIRST

JMP INPUT

FIRST: CALL CLEAR

微机原理

LEA BX ,WORD1 ;准备显示第一个单词

SHOW: MOV DL,[BX+1]

CMP DL ,20H ;判断是否显示完一个单词(是否空格) JZ KU

CMP DL,0DH ;判断是否测试完毕

JZ HP

MOV AH,02H

INT 21H

INC BX

JMP SHOW

HP: JMP STOP

KU: MOV DX,OFFSET STR1

MOV AH,09H

INT 21H

MOV AH,07H ;从键盘输入字符选择是否认识或者直接选择显示哪个单词 INT 21H

CMP AL,'K'

JZ KNOW

CMP AL,'U'

JZ UNKNOW

CMP AL,'N'

JZ NEXT

CMP AL,'L'

JZ LAST

JMP KU

NL: MOV DX,OFFSET STR2

MOV AH,09H

INT 21H

MOV AH,07H ;从键盘输入字符选择下个一或者上一个或者跳出程序 INT 21H

CMP AL,'N'

JZ NEXT

CMP AL,'L'

JZ LAST

CMP AL,'O'

JZ STOP

JMP NL

LAST: CALL CLEAR ; 清屏

微机原理

CALL SET_POSITION ; 置光标位置

DEC BX

MOV DL,[BX]

CMP DL,20H

JZ LAST1

JMP LAST

LAST1: DEC BX

MOV DL ,[BX]

CMP DL,20H

JZ SHOW

JMP LAST1

NEXT: CALL CLEAR

CALL SET_POSITION

INC BX

MOV DL,[BX]

CMP DL,20H

JZ SHOW

JMP NEXT

KNOW: CALL CLEAR

CALL SET_POSITION

INC CH ;统计记忆单词个数 JMP NL

UNKNOW: CALL CLEAR

CALL SET_POSITION

PUSH BX

UNKNOW1: DEC BX

MOV DL,[BX]

CMP DL,20H

JZ SAVE

JMP UNKNOW1

UNKNOW2: POP BX

INC CL ;统计未记忆单词个数 JMP NL

SAVE: MOV [DI],BX ;记录未记忆单词的偏移地址 ADD DI,2

JMP UNKNOW2

STOP: CALL CLEAR

KS: MOV AH,02 ;调用中断置光标位置 MOV BX,0

MOV DX,0500H

INT 10H

微机原理

MOV DX,OFFSET MSG0 ; 显示记忆单词个数 MOV AH,09H

INT 21H

MOV BL,CH ;调用过程实现数据转换和显示 CALL ZH

US: MOV AH ,02H ; 显示未记忆单词个数 MOV BX,0

MOV DX,0600H

INT 10H

MOV DX,OFFSET MSG1

MOV AH,09H

INT 21H

MOV BL,CL

CALL ZH

RATE: MOV AH ,02H ;显示正确率

MOV BX,0

MOV DX,0700H

INT 10H

MOV DX,OFFSET RATE0

MOV AH,09H

INT 21H

MOV BL,CH

CALL ZH

MOV DL,'/'

MOV AH,02H

INT 21H

ADD CL,CH

MOV BL,CL

CALL ZH

MOV AH ,02H ; 置光标位置

MOV BX,0

MOV DX,0900H

INT 10H

U0: LEA DX,MSG3 ;显示未记忆单词 MOV AH,09H

INT 21H

POP DI

U1: MOV BX,[DI]

微机原理

CMP BX,0

JZ OVER

U2: MOV DL,[BX+1]

MOV AH,02H

INT 21H

INC BX

CMP DL,20H

JZ U3

JMP U2

U3: ADD DI,02H

JMP U1

OVER: JMP OVER

MOV AX,4C00H INT 21H

ZH PROC

PUSH CX

MOV AL,00H

ADD AL,BL

DAA

MOV BL,AL

H: AND AL,0F0H

CMP AL,00H

JZ L

MOV CL,04H

SHR AL,CL

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

L: MOV AL,BL

AND AL,0FH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP CX

RET

ZH ENDP

CLEAR PROC PUSH CX

PUSH DX ;调用dos中断,返回系统;子程序清屏

微机原理

PUSH BX

MOV AX,0600H MOV CX,0000H MOV DX,184FH MOV BH,07H INT 10H

POP BX

POP DX

POP CX

RET

CLEAR ENDP

SET_POSITION PROC PUSH BX PUSH DX MOV BH,0

MOV DX,0808H MOV AH,02H INT 10H POP DX POP BX

RET

SET_POSITION ENDP

CODE ENDS

END START 子程序置光标位置 ;

本文来源:https://www.bwwdw.com/article/6194.html

Top