;*********************************************************************
;     函数功能:转化指令长度的内存区块为ASCII,转储到目标内存块,目标
;                          内存块长度应该是源内存块的2倍,如果内存块的内容均为压
;                          缩BCD码,则函数恰好将其转化为ASCII码。
;     入口参数:参数3:目标内存块地址,参数2:源内存块地址,参数1:源
;                         内存块大小
;   参数大小:均为2个字节,参数顺序,自右向左
;  注意:         要在16位代码段中使用本函数,子过程已经通过了作者的初步
;                        测试,欢迎大家测试并使用。
;*********************************************************************
MEM_TO_HEX  PROC FAR
PUSH BP
MOV  BP,SP
MOV  DI,[BP+06H] ;提取目标内存块地址
MOV  SI,[BP+08H] ;提取源内存块地址
MOV  CX,[BP+0AH] ;提取源内存块长度(单位:字节)
LCX:
MOV  AL, BYTE PTR [SI]
MOV  BH, AL ;保存AL的高半字节
MOV  BL, 2H
LBL:
AND  AL, 0FH ;将AL低半字节转化成十六进制
CMP  AL, 09H
JA  A
OR  AL,30H ;转化数字(0~9)成ASCII
JMP  B
A: OR  AL,31H ;转化字母(A~F)成ASCII
B: MOV  BYTE PTR [DI],AL;存入目标内存区
INC  DI  ;目标内存指针加1
MOV  AL,BH ;恢复AL的高半字节
SHR  AL,4H
DEC  BL  ;循环计数器减1
JNZ  LBL
INC  SI  ;源内存指针加1
LOOP LCX
POP  BP
RET  6H
MEM_TO_HEX  ENDP

;*********************************************************************;     函数功能:转化指令长度的内存区块为ASCII,转储到目标内存块,目标;                          内存块长度应该是源内存块的2倍,如果内存块的内容均为压;                          缩BCD码,则函数
十六 转十 BCD 算法(汇编)是应wahllfok的要求上传的,wahllfok原本需要 BCD 转十六 的算法,我最近有点忙只有这个逆算法(几年前写的),希望能给你借鉴。有时间我再写一个。 这个算法分两个子程序,一个是将十六 转十 压缩 BCD ),一个是 BCD 压缩 算法。连起来即可。
// BCD 码 转 十 #define BCD _TO_DECIMAL(x) ((((x) & 0xf0) >> 4) * 10 + ((x) & 0x0f)) // 十 BCD 码 #define DECIMAL_TO_ BCD (x) ((((x) / 10) << 4) + ((x) % 10)) * \brief 十六 bcd 用于把时
16位的数字高字节和低字节Problem: To show masking of lower and higher nibbles of 8-bit number using 8086 Microprocessor. 问题:使用8086微处理器显示8位低半字节和高半字节的屏蔽。 Assumption: Number is stored at memory location 0600...
// BCD 转换成16 数(例如:0x16转换成16)---读时钟使用(例如:读的秒=26代表:0x26,为 BCD 码,需要转换成十 :38) uint8_t BCD toHEX(uint8_t BCD ) uint8_t tempData; tempData = ...
文章目录前言一、简单操作指令 CLR、CPL、SWAPCLR ACPL ASWAP A二、位移指令 RL、RR、RLC、RRCRL ARR ARLC ARRC A三、逻辑“与”指令 ANLANL A, XXXANL direct, XXX四、逻辑“或”指令 ORLORL A, XXXORL direct, XXX五、逻辑“异或”指令 XRLORL A, XXXXRL direct, XXX 前言...
1、 BCD 码的种类 BCD 码可分为有权码和无权码两类:有权 BCD 码有8421码、2421码、5421码,其 8421码是最常用的;无权 BCD 码有余3码、格雷码等。 1. 8421 BCD 码 8421 BCD 码是最基本和最常用的 BCD 码,它和四位自然二 码相似,各位的权值为8、4、2、1,故称为有权 BCD 码。和四位自然二 码不同的是,它只选用了四位二 前10组代码,即用00
在做嵌入式软件的设计 ,经常会遇到十六 BCD 码与十 之间的转换,最近做M1卡的应用 ,涉及了大量的十六 BCD 码与十 之间的转换。笔者通过对 BCD 码、十六 权的理解,轻松的实现了他们之间的互换。 #include   #include /////////////////////////////////////////////////////  //功能:二
MOV AL, 63 ; 将十 数63 存入 AL寄存器 DAA ; 将AL 的数值转换为 压缩 BCD 码,并存回AL AAM ; 将AL 的数值 存入 AH和AL ,AH为高位 BCD 码,AL为低位 BCD 码 2. 使用AAA指令: MOV AL, 63 ; 将十 数63 存入 AL寄存器 AAA ; 将AL 的数值转换为 压缩 BCD 码,并存回AL AAM ; 将AL 的数值 存入 AH和AL ,AH为高位 BCD 码,AL为低位 BCD 码 这两种方式都可以将十 数63以 压缩 BCD 码的 形式 送到AX