MOV DX,OFFSET MES MOV AH,09H INT 21H
INC SI CALL SHOW
;显示高字节
DEC SI ;显示低字节 CALL SHOW
START0: MOV AH,06H MOV DL,0FFH INT 21H
JE START0 MOV AX,4C00H INT 21H
SHOW PROC NEAR
MOV AL,DS:[SI]
AND AL,0F0H SHR AL,4
CMP AL,0AH JB C2 ADD AL,07H C2: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H
MOV AL,DS:[SI]
AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H RET ENDP CODE ENDS
END START
;判断是否有键按下;若没有转START0 ;有键返回DOS ;取高4位 ;是否是A以上的数 ;显示字符 ;取低4位 ;显示字符 - 16 -
2 .十进制数的ASCII 码转换为BCD码
实验源文件名DVA3_2(在文件夹“ASM_汇编例程”中) 实验程序清单如下:
STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
DDATA SEGMENT
MES DB 'The BCD code of decimal are:$' BUF DB 31H,32H,33H,34H,35H DB 10H DUP(0) DDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV CX,0005H
MOV DI,OFFSET BUF A1: MOV BL,0FFH MOV AL,[DI]
CMP AL,3AH ;比较AL中的数是否是0-9的ASCII码 JNB A2 SUB AL,30H JB A2 MOV BL,AL A2: MOV AL,BL
MOV [DI+05H],AL INC DI LOOP A1 MOV SI,DI MOV CX,05H MOV DX,OFFSET MES MOV AH,09H INT 21H A3: CALL SHOW MOV DL,20H MOV AH,02H
- 17 -
INT 21H
INC SI LOOP A3
START0: MOV AH,06H MOV DL,0FFH INT 21H
JE START0 MOV AX,4C00H
;判断是否有键按下
;若没有转START0 ;有键返回DOS
INT 21H
SHOW PROC NEAR MOV AL,DS:[SI] AND AL,0F0H SHR AL,4
CMP AL,0AH JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H
MOV AL,DS:[SI] AND AL,0FH CMP AL,0A JB C3 ADD AL,07H C3: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H RET ENDP
;取高4位 ;是否是A以上的数
;显示字符
;取低4位
;显示字符
CODE ENDS
END START
3 .十六进制数的ASCII 码转换为十进制数
实验源文件名DVA3_3.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下:
- 18 -
STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DDATA MES DB SEGMENT
'The ascii code of hex are:$' BUF DB 0CH,00H DB
10H DUP(0)
DDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DDATA
START: MOV AX,DDATA MOV DS,AX
MOV SI,OFFSET BUF MOV DX,[SI] MOV BX,SI ADD BX,2 ADD SI,7 A1: DEC SI MOV AX,DX MOV DX,0000H MOV CX,000AH DIV CX XCHG AX,DX ADD AL,30H MOV [SI],AL CMP DX,0000H JNE A1 A2: CMP SI,BX JZ A3
DEC SI MOV AL,30H MOV [SI],AL JMP A2 A3: MOV CX,5
MOV SI,OFFSET BUF
- 19 -
ADD SI,2
MOV DX,OFFSET MES MOV AH,09H INT 21H A4: CALL SHOW MOV DL,20H MOV AH,02H INT 21H
INC SI
LOOP A4
START0: MOV AH,06H MOV DL,0FFH INT 21H
JE START0 MOV AX,4C00H INT 21H
SHOW PROC NEAR MOV AL,DS:[SI]
AND AL,0F0H SHR AL,4
CMP AL,0AH JB C2 ADD AL,07H C2: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H
MOV AL,DS:[SI]
AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H RET
START0 ;有键返回DOS 4位 A以上的数 4位
- 20 - ;判断是否有键按下 ;若没有转 ;取高 ;是否是 ;显示字符 ;取低 ;显示字符