南邮 | 汇编实验 3.17:用户键入“通行字”,显示欢迎界面

题目

程序执行后,给出简单明了的操作提示,请用户键入“通行字”,按回车表示通行字键入结束。只有当用户键入的字符串和程序内定的字符串相同时,显示欢迎界面,程序返回DOS,否则请用户重新键入“通行字”。(参见实验指导书P.44 实验3.17)

程序清单

DATA SEGMENT USE16

BUF DB 4 DUP(?)
Notation DB 'Please enter your tongxinzi:$'
tongxinzi DB 'wonz'
WA DB 'Wrong tongxinzi!$'
AC DB 'Welcome!'
LL EQU $-AC
COUNT DB 3  ;只允许输 3 次

DATA ENDS

CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA,ES:DATA  ;ES附加段也要,待显示字符放进ES
     
BEG:
     MOV AX,DATA
     MOV DS,AX
     MOV ES,AX  ;AX传给ES

AGAIN:
	 MOV AH,09H
	 MOV DX,OFFSET Notation  ;输出提示语句
	 INT 21H
     MOV BX,OFFSET BUF
     MOV CX,4  ;输入四个符号

;判断通信字是否正确 
LAST:
     MOV AH,07H  ;不回显字符,不响应Ctrl_C
     INT 21H     
     MOV [BX],AL ;低位传给BX
     MOV AH,02H  ;显示字符
     MOV DL,'*'
     INT 21H
     INC BX      ;BX后移一位,一共移4次
     LOOP LAST
     
     MOV DI,OFFSET BUF
     MOV SI,OFFSET tongxinzi
     MOV CX,4    ;比较4次
     REPE CMPSB  ;字符串比较     
     JZ RIGHT    ;ZF=1,表示一样,跳到RIGHT
     MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
     
     MOV AH,09H
     MOV DX,OFFSET WA  ;输出错误通信字
     INT 21H
     MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
     DEC COUNT  ;计数,输错三次通信字就退出
     JZ EXIT
     JMP AGAIN

RIGHT:
	 MOV AH,2
     MOV DL,0AH  ;换行
     INT 21H
     MOV AH,09H
     MOV DX,OFFSET AC  ;输出欢迎
     INT 21H

COLOR:
     MOV AX,0003H   ;80*25彩色文本方式
     INT 10H
     MOV AX,1301H  ;显示彩色字符串
     MOV BX,0047H  ;红色背景,灰白色字体
     MOV CX,LL
     MOV DH,12   ;一共 25 行,中央显示
     MOV DL,(80-LL)/2    ;80列,中央显示    
     LEA BP,AC
     INT 10H         ;调用 BIOS 中断INT 10H的13H号功能,居中彩显

EXIT:
     MOV AH,4CH
     INT 21H  ;返回 DOS
     
CODE ENDS
     END BEG

实验结果

当屏幕显示:输入通信字时,不回显输入。

当输入错误的时候,会让你重新输入。
在这里插入图片描述

输入正确的时候,会跳出下面的界面。(加了个彩色界面,用的 BIOS 屏幕功能)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wonz

创作不易,一块就行。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值