导航:首页 > 文件处理 > 汇编压缩bcd码

汇编压缩bcd码

发布时间:2022-02-06 23:56:32

Ⅰ 用汇编语言编写多字节压缩bcd码减法程序,要求显示被减数,减数及结果

;修改'899',和'999'的长度,即可计算任意长度的相加
;如d10db'18929387499'
;d12db'18234287439'
;补充,这是相加,你要求是相减,搞差了,减法的附在后面

dsegsegment
d10db'899'
len1equ$-d10;注意d10与d12长度相同,可以做不同,但比较麻烦,这里没做
d11db'+'
d12db'999';长度与d10相同
d13db'=','$'
d2dblen1+1p(0),'$'
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,d10
int21h

leasi,d10
leadi,d12
leabx,d2
addsi,len1-1;指向个位数位置
adddi,len1-1;指向个位数位置
addbx,len1;指向个位数位置
movcx,len1;计算器

clc;清除cf
c0:
movah,0;清除ah
moval,[si];取对应位置上的数字相加
andal,0FH;
movdl,[di];
anddl,0FH;
addal,dl;相加
aaa;调整
addal,[bx];加上可能的进位
aaa;再调整
mov[bx],al;保存到对应的位置上
mov[bx-1],ah;可能存在的进位,保存到对应的位置上
decsi;下一位相加
decdi
decbx
loopc0

movcx,len1+1
leabx,d2
c1:
xorbyteptr[bx],30H;将结果转换为ascII值
incbx
loopc1

movcx,len1
leabx,d2
c2:
moval,[bx];查找结果中,第1个结果不是0的数字
cmpal,30H;从此开始显示结果,以免出现0123这样的结果
jnzp0
incbx
loopc2
p0:
movdx,bx
movah,9
int21h

movah,4ch
int21h
csegends
endstart

;这是减法的代码
;有个bug,被减数必须大于减数时才正确。
;暂时先这样
dsegsegment
d10db'991'
len1equ$-d10;注意d10与d12长度相同,可以做不同,但比较麻烦,这里没做
d11db'-'
d12db'192';长度与d10相同
d13db'=','$'
d2dblen1+1p(0),'$'
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,d10
int21h

leasi,d10
leadi,d12
leabx,d2
addsi,len1-1;指向个位数位置
adddi,len1-1;指向个位数位置
addbx,len1;指向个位数位置
movcx,len1;计算器

clc;清除cf
c0:
movah,0;清除ah
moval,[si];取对应位置上的数字相加
andal,0FH;
movdl,[di];
anddl,0FH;

subal,[bx];减去可能的借位
aas;再调整

subal,dl;相减
aas;调整

negah;如有借位,转换为正数1
mov[bx],al;保存到对应的位置上
mov[bx-1],ah;可能存在的进位,保存到对应的位置上
decsi;下一位相加
decdi
decbx
loopc0

movcx,len1+1
leabx,d2
c1:
xorbyteptr[bx],30H;将结果转换为ascII值
incbx
loopc1

movcx,len1
leabx,d2
c2:
moval,[bx];查找结果中,第1个结果不是0的数字
cmpal,30H;从此开始显示结果,以免出现0123这样的结果
jnzp0
incbx
loopc2
p0:
movdx,bx
movah,9
int21h

movah,4ch
int21h
csegends
endstart

Ⅱ 汇编语言中的bcd码默认是压缩bcd还是非压缩bcd

这个,没有默认,只有开发者定义使用哪种编码。早年的时候,计算机的配备比较低,为了节省内存,使用压缩的BCD码就比较好,现在存储这方面的限制比较小了,非压缩也无所谓了。主要看开发者喜欢哪种方式了。

Ⅲ 汇编语言压缩BCD码和非压缩BCD码是怎么回事

BCD码是表示十进制数的,非压缩BCD码是用8位表示的,其实只用低4位,高4位全为0。
例如,十进制数36,用非压缩BCD码表示为:0000 0011 0000 0110 ,这是两个字节。
压缩BCD码,就把高4位的0省掉了,用一个字节表示两个BCD码了。
还是,十进制数36,用压缩BCD码表示为:0011 0110 ,就一个字节就行了。节省了一个字节。

Ⅳ 汇编语言程序设计:一个字的压缩BCD码的减法

压缩的BCD码减法的十进制调整指令是DAS,指令格式为:DAS(隐含对寄存器AL操作) 功能为:如果AL的低四位>09H,或者标志位AF=1,则将AL减06H调整,AF=1;如果AL的高四位>09H,或者标志位CF=1,则将AL-60H调整,CF=1。

Ⅳ 如何用汇编语言实现将非压缩BCD码转换成对应的压缩BCD码

MOV R2, #05H;非压缩BCD码
MOV R3, #06H
MOV A, R2 ;将R2传给A
SWAP A ;A的高低4位交换
ORL A, R3 ;将R3与A或运算
MOV R4, A ;运算后的值即压缩码

关键是SWAP和ORL运算。

Ⅵ 汇编 压缩BCD码有哪些

十进制数的二进制表示形式,低四位表示一位高四位表示一位,例如:66H=66。所以可以根据自己的需要定义

Ⅶ 51单片机汇编语言把ASCII码转换为压缩BCD码

mov R6,#30H
mov R7,#0
mov DPTR,#2000H
mov R2,10
L1:
movx A,@DPTR
inc DPTR
anl A,#0FH
swap A
mov R0,A
movx A,@DPTR
inc DPTR
anl A,#0FH
orl A,R0
push DPH
push DPL
mov DPH,r6
mov DPL,r7
movx @DPTR,A
inc DPTR
mov R6,DPH
mov R7,DPL
pop DPL
pop DPH
djnz R2,L1

Ⅷ 如何用汇编语言实现将压缩BCD码转换成对应的非压缩BCD码

;入口al,出口ax
packtobcdprocnear
pushbx
pushcx
movbl,al
andbl,15
movcl,4
shral,cl
movah,al;高位放在ah中
moval,bl;地位放在al中
popcx
popbx
ret
packtobcdendp

Ⅸ 用汇编语言将压缩BCD码转换成对应十进制数字的ASCLL码

将压缩BCD码转换成对应十进制数字的ASCLL码,其实就是将在BCD码的基础上加30,这就是比较经典的汇编例题啊。

Ⅹ 跪求汇编语言4位压缩BCD码与4位压缩BCD码相乘的程序!

;入口参数
;
AL:4位压缩BCD码于低4位
;
BL:4位压缩BCD码于低4位
;出口参数
;
AL:压缩BCD码形式的乘积
DAM
PRO
PUSH
BX
PUSH
CX
MOV
BH,0AH
MOV
CL,4
XOR
AH,AH
MUL
BL
XOR
AH,AH
DIV
BH
SHL
AL,CL
XOR
AL,AH
POP
CX
POP
BX
DAM
ENDP

阅读全文

与汇编压缩bcd码相关的资料

热点内容
简述编译程序以及解释程序 浏览:1
linux升级kernel 浏览:174
入侵服务器挖矿是什么罪 浏览:44
房屋解压资料丢了怎么办 浏览:806
java文件行读写 浏览:544
影城网上售票系统源码 浏览:634
防疫就是命令歌曲 浏览:204
滴滴号码加密怎么解除 浏览:844
模具编程的职责 浏览:944
华为ssh改加密算法 浏览:149
文件夹空白合同 浏览:763
pythonwebpy开发 浏览:671
不是c编译器的有 浏览:662
win10压缩包下载 浏览:905
逆战手机app怎么样 浏览:948
自嗨自我解压图片 浏览:397
电子书导入kindle哪个文件夹 浏览:420
pythontcpserver性能 浏览:546
linux文件夹改名 浏览:566
单片机开发板是什么 浏览:853