分析下过程

来源:百度知道 编辑:UC知道 时间:2024/06/20 23:49:58
MODEL SMALL
.DATA
MIMAB DB ‘3742105986’
MIMA DB 4 DUP(?)
.CODE
BEGIN: MOV AX,@DATA
MOV DS,AX
MOV CX,4
LEA BX,MIMAB; lea取有效地址。把MIMAB送入BX
LEA SI,MIMA
NEXT: MOV AH,1
INT 21H
AND AL,0FH
XLAT MIMAB ;xlat是以bx为基点,al为位移   置换。
MOV [SI],AL
INC SI
LOOP NEXT
MOV CX,4
LEA SI,MIMA
MOV AH,2
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
NEXT2: MOV AL,[SI]
MOV DL,AL
INT 21H
LOOP NEXT2
MOV AH,4CH
INT 21H
END BEGIN
从nEXT中的and就不明白他的意思了。谁给分析分析啊。我赚了分会给追加的

NEXT:
MOV AH,1
INT 21H;这两句是要求输入一个字符(输0~9才有意义),比如输入“6”,即在AL中得到36H
AND AL,0FH ;转换成数值,即AL=06H
XLAT ;查表,即取当前数据段地址为BX+AL的那个单元,也就是“5”(35H)放在AL中
MOV [SI],AL ;存放SI指向的单元,即MIMA的第0个位置
INC SI ;SI加一,指向MIMA的第一个位置
LOOP NEXT ;以上这些循环4次,也就是输入四个数,替换为MIMAAB中的相应位置的数字,存放在MIMA中

MOV CX,4
LEA SI,MIMA;这是为输出数字串MIMA做准备,设置循环次数,和显示的首地址

MOV AH,2
MOV DL,0DH
INT 21H ;2号调用,输出回车,就是CR
MOV DL,0AH
INT 21H ;2号调用,输出换行,就是LF
NEXT2:
MOV AL,[SI]
MOV DL,AL
INT 21H ;2号调用,循环四次输出MIMA
LOOP NEXT2

这个程序的功能就是输入四个数字,加密后显示出来
加密规则就是输入数字X作为序号(0~9),显示MIMAAB中序号为X的那个数字