汇编语言——十进制显示Bx的值

来源:互联网 发布:淘宝加绒外套女短 编辑:程序博客网 时间:2024/06/05 00:40
本例分两步实现。
(1)转换并保存结果
这一步将二进制数转换为十进制值,即求出十进制值各位上的数字。由于16位二进制数最大能表示的数是65535,所以,转换后,最多是一个万位的十进制数。转换的步骤就是:把要转换的数依次除以10000,1000,100和10,分别可以得到万位数字、千位数字、百位数字和十位数字。除以10得到的余数就是个位数字。程序中,将得到的这些数字先存入内存指定单元,供显示模块使用。
(2)显示

本例程序把转换和显示分成两个模块来实现,使得程序的结构清晰。

代码:

DATA   SEGMENT               DECNUM   DB   5 DUP(?)DATA    ENDSCODE    SEGMENT                    ASSUME CS:CODE,DS:DATASTART: MOV  AX,DATAMOV  DS,AX MOV  BX,65530 ;要转换的值LEA  SI,DECNUM        MOV  DX,0          MOV  AX,BXMOV  CX,10000DIV  CXMOV  [SI],AL;求得万位的值,存入指定单元        INC  SIMOV  AX,DX ;上次计算的余数存在DX中MOV  DX,0MOV  CX,1000DIV  CXMOV  [SI],AL;求得千位的值,存入指定单元        INC  SIMOV  AX,DXMOV  DX,0MOV  CX,100DIV  CXMOV  [SI],AL;求得百位的值,存入指定单元        INC  SIMOV  AX,DXMOV  CL,10DIV  CLMOV  [SI],AL;求得十位的值,存入指定单元        INC  SIMOV  [SI],AH ;此时,余数就是个位的值,LEA  SI,DECNUM   ;以下代码开始显示存储在存储单元中的十进制数MOV  CX,5DISP:MOVDL,[SI];依次取出十进制数各位的值OR  DL,30H;将取出的值转换为ASCII值MOV  AH,2INT  21H;利用DOS功能调用,显示INC  SILOOP  DISP        MOV  DL,'D'MOV  AH,2INT  21HMOV  AH,4CHINT  21HCODE    ENDSEND     START


0 0