1)用分支结构,将一位十六进制数(0~F)转换成对应的ASCII码(只考虑大写字母)。
STACK SEGMENT
DW 256 DUP(?)
TOP LABEL WORD
STACK ENDS
data segment
hex db ?
ascll DB ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov al,hex ;将一个字节的16进制存储在ax的低位中
add al,30h
cmp al,39h
jbe convertEnd ;judge below zero 小于等于
add al,7
convertEnd:
mov ascll,al
int 03h
code ends
end start
结果:
2)在DS数据段存放着某班20个同学的微机原理考试成绩。统计≥90分、80分~89分、70分~79分、60分~69分和<60分的人数,并将统计的结果放在当前数据段偏移地址为BUFFER的顺序单元中。
DATA SEGMENT
DATA1 DB 20 DUP(?)
DATA2 DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,20
LEA SI,DATA1
LEA DI,DATA2
AGAIN:MOV AL,[SI]
CMP AL,90
JC NEXT1
INC BYTE PTR[DI]
JMP STO
NEXT1:CMP AL,80
JC NEXT2
INC BYTE PTR[DI+1]
JMP STO
NEXT2: CMP AL,70
JC NEXT3
INC BYTE PTR[DI+2]
JMP STO
NEXT3: CMP AL,60
JC NEXT4
INC BYTE PTR[DI+3]
JMP STO
NEXT4:INC BYTE PTR[DI+4]
STO:INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START