STACKS SEGMENT STACK
DW 20H DUP(?)
TOP LABEL WORD
STACKS ENDS --定义栈
DATAS SEGMENT
TABLE DB '123456789ABCDEF'
DATAS ENDS --建一张表,对应十六进制的表示方式
CODES SEGMENT
ASSUME CS:CODE,SS:STACKS,DS:DATAS
MAIN PROC FAR
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
MOV AX,DATAS
MOV DS,AX
MOV AX,1234
CALL BINIHEX
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
BINIHEX PROC NEAR
PUSH CX
PUSH BX
PUSH DX
--保存现场
LEA BX,TABLE --将表的首地址送到BX目的是使用XLAT指令
MOV DH,4 --循环的次数为四次
L1: PUSH AX
AND AX,F000H --让AX和F000H做与运算,目的是保留前四位
MOV CL,4 --设置循环左移位数为4
RCL AX,CL --循环左移四位
XLAT --换码指令:(AL)<--((BX)+(AL))
MOV DL,AL --将AL中的值送到DL进行输出
MOV AH,2
【汇编程序】编写一段子程序BINIHEX,完成十六进制数输出的功能。要输出的数在AX寄存器中
最新推荐文章于 2021-11-10 17:49:56 发布
这篇博客详细介绍了如何用汇编语言编写子程序BINIHEX,该程序接收AX寄存器中的数值,并通过XLAT指令转换成对应的十六进制字符,然后通过INT 21H调用输出到屏幕。通过循环和位移操作,实现了从高位到低位的逐位转换与输出。
摘要由CSDN通过智能技术生成