汇编 第二次实验

任务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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值