导航:首页 > 文件处理 > 汇编压缩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码相关的资料

热点内容
手机主题app什么用处 浏览:142
全职猎人app在哪里 浏览:853
查货车北斗评分用哪个app 浏览:171
程序员动漫宅 浏览:968
linux新建用户管理命令 浏览:436
阿里云linux服务器远程桌面连接 浏览:621
程序员和园长妈妈玩游戏 浏览:579
钉钉怎么打文件夹 浏览:160
单片机计算图片大小 浏览:491
8032属于什么单片机 浏览:683
机智云服务器和mqtt服务器 浏览:921
输命令的系统叫什么 浏览:665
c高级编程第八版中文 浏览:495
电脑打开一个文件夹未响应 浏览:866
程序员故事40字左右 浏览:374
求一些写程序员的小说 浏览:876
气球可以做些什么解压玩具 浏览:557
框架柱底层加密多高 浏览:610
rarforlinux64 浏览:868
svn怎么在服务器上加文件夹 浏览:574