微机实验二
(1)从BUF单元开始存有一字符串(长度<255),编程实现统计该字符串中的ASCII在42H~45H之间的字符个数,并将统计结果以二进制形式显示在屏幕。
.486
DATA SEGMENT USE16
BUF DB 'ABCD'
COUNT EQU $-BUF
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:
MOV AX,DATA
MOV DS,AX
MOV BL,0 ;计数
MOV SI,0
MOV CX,COUNT
AGA:
CMP BUF[SI],42H
JB LAST ;低于转移
CMP BUF[SI],45H
JA LAST ;高于转移
INC BL
LAST:
INC SI
LOOP AGA
MOV CX,8
M2:
TEST BL,80H
JNZ M3
MOV DL,'0'
MOV AH,02H
INT 21H
JMP M4
M3:
MOV DL,'1'
MOV AH,02H
INT 21H
M4:
SHL BL,1
LOOP M2
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
(2)用户登录验证程序的实现
程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时,显示欢迎界面并返回DOS;否则给出提示信息,用户名或密码错误,再次输入。界面颜色自定(彩色或黑白)
.486
DATA SEGMENT USE16
_NAME DB NAME - 1, '1511','$'
_PASSWORD DB PASSWORD - 1, '1212', '$'
BUF_NAME DB 30
DB ?
DB 30 DUP(?)
BUF_PASSWORD DB 30
DB ?
DB 30 DUP(?)
MESG1 DB 'PLEASE INPUTE YOUR NAME: ', '$'
MESG2 DB 'PLEASE INPUTE YOUR PASSWORD: ', '$'
OK DB 0DH, 0AH, '---- WELLCOME ---- ', 0DH, 0AH, '$'
NO DB 0DH, 0AH, 'USERNAME OR PASSWORD ERROR!', 0DH, 0AH, '$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA
BEG: MOV AX, DATA
MOV DS, AX
MOV SS, AX
MOV SP, 0
;GET NAME
AGAIN: MOV AH, 9
MOV DX, OFFSET MESG1
INT 21H
MOV AH, 0AH
MOV DX, OFFSET BUF_NAME
INT 21H
MOV BL, BUF_NAME+1
MOV BH, 0
INC BYTE PTR BUF_NAME+1
MOV SI, OFFSET BUF_NAME + 2
MOV BYTE PTR [BX+SI], '$'
; LINE BREAK
MOV AH, 02H
MOV DL, 0AH
INT 21H
;GET PASSWORD
MOV AH, 9
MOV DX, OFFSET MESG2
INT 21H
MOV DI, 0
MOV BX, OFFSET BUF_PASSWORD + 2
S: MOV AH,08H
INT 21H
MOV BYTE PTR [BX + DI], AL
INC DI
CMP AL, 0DH
JNZ S
MOV AX, DI
MOV BYTE PTR BUF_PASSWORD + 1, AL
MOV BYTE PTR [BX +DI], '$'
CALL CHECK
CMP AX, 0
JZ AGAIN
MOV AH, 4CH
INT 21H
CHECK PROC
MOV SI, OFFSET _NAME
MOV DI, OFFSET BUF_NAME + 1
MOV CX, [SI]
MOV CH, 00H
S0: MOV AL, [SI]
CMP AL, [DI]
JNZ ERROR
INC SI
INC DI
LOOP S0
MOV SI, OFFSET _PASSWORD
MOV DI, OFFSET BUF_PASSWORD + 1
MOV CX, [SI]
MOV CH, 00H
S1: MOV AL, [SI]
CMP AL, [DI]
JNZ ERROR
INC SI
INC DI
LOOP S1
MOV AH, 9
MOV DX, OFFSET OK
INT 21H
MOV AX, 1
JMP OVER
ERROR: MOV AH, 9
MOV DX, OFFSET NO
INT 21H
MOV AX, 0
OVER: RET
CHECK ENDP
CODE ENDS
END BEG
上一篇: 王爽汇编语言 检测点10.4
推荐阅读
-
用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根
-
C++经典算法题-用二分法求方程 2*x*x*x-4*x*x+3*x-6 的根
-
微机原理与接口技术实验:汇编综合练习
-
二分法求x的平方根(C语言)
-
用二分法求方程x3-6x-1=0在x=2附近的一个实根,要求迭代精度为10的-6次方
-
微机原理实验 实验一 简单I/O口扩展 8 位 I/O 扩展
-
用二分法求方程2x^3-4x^2+3^x-6=0在(-10,10)之间的根。
-
微机接口实验一 :8255并行接口实验
-
汇编语言程序设计---5~9章习题答案(王爽第二版)
-
用c语言编写如下程序:二分法求方程f(x)=x^2-x-1=0在区间[1,2]的正根,精确到1e-3?