8086 汇编是一种经典的底层语言,本文将结合代码简单介绍使用汇编语言来实现子程序的设计,以十六进制显示输出寄存器中二进制内容。
题目要求
编制一个过程把AL寄存器内的二进制数用十六进制的形式在屏幕上显示出来。
设计思路
我们知道计算机里存储的是二进制,但显示的时候是通过转换成ASCII码显示出来的,所以我们要做的就是把这些二进制数每四位一组转换成对应数字的ASCII码值并将其赋值给DL,调用21H中断将其显示输出即可。具体的转换过程可以参考代码注释部分。
参考代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| DATA SEGMENT COUNT EQU 5 ARRAY DB 12H, 34H, 24H, 86H, 47H DATA ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AX, DATA MOV DS, AX MOV BX, OFFSET ARRAY MOV CX, COUNT DISPLP: MOV AL, [BX] CALL ALDISP MOV AL, ',' MOV AH, 02H INT 21H INC BX LOOP DISPLP EXIT: MOV AH, 4CH INT 21H
ALDISP PROC PUSH AX PUSH CX PUSH DX PUSH AX
MOV DL, AL MOV CL, 4 SHR DL, CL OR DL, 30H CMP DL, 39H JBE ALDISP1 ADD DL, 7 ALDISP1: MOV AH, 02H INT 21H POP DX
AND DL, 0FH OR DL, 30H CMP DL, 39H JBE ALDISP2 ADD DL, 7 ALDISP2: MOV AH, 02H INT 21H POP DX POP CX POP AX RET ALDISP ENDP
CODE ENDS END START
|
运行结果

说明:代码中本来想用逗号分割的,结果输出的不知道是什么鬼,不过不影响功能的实现。