任务A
思考题:
1.回车字符的ASCII码是什么?
13或者 0DH
2.统计出的数值如何在屏幕上显示出来。如果统计个数超过9时,又将如何处理?
将数值加上30H以转换成asc码,使用DOS2命令可以在屏幕上显示出来
如果计数超过9个,先将前面程序计算出的个数三位数放到AL中,然后调用除法指令DIV除以100得到百位数字,而后除以10得到十位数字,和余下的个位数字。就可以得到000~999显示范围的字符个数。 在调用除法的过程中,被除数在AX中,商在AL中,余数在AH中
3.怎样判断输入的是字母、数字及其它字符?
判断其asc码,30-39为数字,41-59为大写字母,61-79为小写字母
运行结果截图:
代码:
DATA SEGMENT
A DB ? ;存放数字个数
B DB ? ;存放字母个数
C DB ? ;存放特殊字符个数
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,A
MOV BL,0
MOV CX,3
MOV DS:[SI],BL
MOV DS:[SI+1],BL
MOV DS:[SI+2],BL
S:
MOV AH,1
INT 21H
CMP AL,0DH
JE EXIT
CMP AL,30H
JGE S1 ;当字符大于等于0时跳转到S1段
JMP ELSE1
S1:
CMP AL,39H
JLE D ;当字符小于等于9时跳转到D段
CMP AL,41H
JGE Z1 ;当字符大于等于a时跳转到z1段
JMP ELSE1
Z1:
CMP AL,5AH
JLE WORD1 ;当字符大于等于a时跳转到Z1段
CMP AL,61H
JGE T1 ;当字符大于等于A时跳转到t1段
JMP ELSE1
T1:
CMP AL,7AH
JLE WORD1 ;当字符小于等于Z时跳转到word1段
JMP ELSE1
D:
MOV BL,DS:[SI]
INC BL
MOV DS:[SI],BL
CMP BL,9
JE EXIT
JMP S
WORD1:
MOV BL,DS:[SI+1]
INC BL
MOV DS:[SI+1],BL
CMP BL,9
JE EXIT
JMP S
ELSE1:
MOV BL,DS:[SI+2]
INC BL
MOV DS:[SI+2],BL
CMP BL,9
JE EXIT
JMP S
EXIT:
MOV AL,DS:[SI]
MOV AH,0
MOV BL,100 ;对应百位
MOV BL,AH
MOV AH,2
ADD AL,30H
MOV DL,AL
INT 21H
MOV AL,BL
MOV AH,0 ;对应十位
MOV BL,10
DIV BL
MOV BL,AH
MOV AH,2
ADD AL,30H
MOV DL,AL
INT 21H
MOV DL,BL
ADD DL,30H ;对应个位数
MOV AH,2
INT 21H
MOV DL,' '
MOV AH,2
INT 21H
INC SI
LOOP EXIT
MOV AX,4C00H
INT 21H
CODE ENDS
END START
任务B
截图:与O比较
代码:
DATA SEGMENT
ALPHA DB ?
ALPHAM DB 0
STR DB 'The quick brown fox jumps over the lazy dog. '
DB 'Pack my box with five dozen liquor jugs. The five boxing wizards jump quickly. '
DB 'Quick wafting zephyrs vex bold Jim. My favourate animal is panda. '
DB 'i think panda is the cutist animal in the world. '
DB 'It has black and white fur and especially it have black fur around eyes which looks like wear a pair of sunglasses.','$'
CRLF DB 0AH,0DH,'$' ;换行
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
XOR AX,AX ;清0
XOR BX,BX
XOR CX,CX
XOR SI,SI
AGAIN:MOV BL,STR[SI]
CMP BL,24H ;结束标志‘$’
JZ QUIT
CMP BL,4FH ;与O比较
JZ ADDALPHA
INC SI
JMP AGAIN
ADDALPHA:INC CH
MOV BH,ALPHAM
LOOPALPHA:CMP CH,09H
JBE AGAIN
INC BH
SUB CH,0AH
MOV ALPHAM,BH
JMP LOOPALPHA
QUIT:MOV ALPHA,CH
MOV BH,ALPHAM
CMP BH,0
JZ NEXTALPHA
MOV AH,02H
MOV DL,BH
ADD DL,30H
INT 21H
NEXTALPHA:MOV DL,ALPHA
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,CRLF
INT 21H ;显示ALPHA的数量
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START