【汇编程序】编写一段子程序BINIHEX,完成十六进制数输出的功能。要输出的数在AX寄存器中
程序员文章站
2024-02-01 23:36:58
...
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
INT 21H
POP AX --将求与运算之前的AX出栈
RCL AX,CL --左移四位,进行下一次运算
DEC DH --DH自减
CMP DH,0 --如果DH不等于0,则循环这段操作
JNZ L1
POP DX
POP BX
POP CX
MOV AH,4CH
INT 21H
BINIHEX ENDP
CODES ENDS END MAIN上一篇: quartz定时器
下一篇: jquery使用技巧总结