‘壹’ 编写一完整程序实现多字节(10个以上字节型数据)加法运算,并将加数和结果显示在计算机屏幕上。
以16进制数的形式显示还好说,若是要以10进制数的形式显示加数和结果,那是很有难度的!
‘贰’ c语言十进制加法
一般都是10进制表示的,而实际的计算是以2进制进行的,不过这是编译器的事,不用关心。如需以其他形式输出,只需要转换格式
‘叁’ 89c52 汇编语言 如何将一个3字节的大数转换为十进制并显示出来
帮你将难的部分做出来吧,显示部分你自己搞定
将三个字节赋值给R2R3R4(R2为高位),返回值在R0开始的NCNT个地址中,因此调用前需如此处理:
NCNT EQU 20H
....................
MOV R2,#L
MOV R3,#M
MOV R4,#N
MOV R0,#30H
...........
IBTD31 :
CLR A
MOV NCNT,A
IBD311 :
MOV R7,#0AH
LCALL NDIV31
MOV A,R7
MOV @R0,A
INC R0
INC NCNT
MOV A,R2
ORL A,R3
ORL A,R4
JNZ IBD311
MOV A,R0
CLR C
SUBB A,NCNT
MOV R0,A
RET
NDIV31 :
MOV A,R2
MOV B,R7
DIV AB
PUSH A
MOV R2,B
MOV B,#10H
NDV311 :
CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV F0,C
CLR C
SUBB A,R7
JB F0,NDV312
JC NDV313
NDV312 :
MOV R2,A
INC R4
NDV313 :
DJNZ B,NDV311
POP A
CLR OV
JZ NDV314
SETB OV
NDV314 :
XCH A,R2
MOV R7,A
RET
‘肆’ 单片机 单字节无符号十进制加法 程序
这是最简单的操作啊。你是要问什么问题?
加完了,用DAA就可以了。
MOV A,#34
ADD A,#12 ; 34+12
DA A ; 调整为BCD码
‘伍’ 汇编多字节十进制加法
data1 segment
s db 10,?,11 p ('$')
s1 db 1,10,100
s2 db 0Dh,0Ah,'$'
s3 db 'error','$'
ddec dw 10000,1000,100,10,1
dsc db 0,0,0,0,0dh,0ah,'$'
data1 ends
code segment
assume cs:code,ds:data1
start:mov ax,data1
mov ds,ax
call lp
call md
mov cx,5 ;把累加的结果以十进制输出
lea si,ddec
lea di,dsc
conv: mov bl,0
rrr: sub ax,[si]
jc next
inc bl
jmp rrr
next: add ax,[si]
or bl,30h
mov [di],bl
inc si
inc si
inc di
loop conv
lea dx,s2
mov ah,09h
int 21
lea dx,dsc
mov ah,9h
int 21h
dm1: mov ah,4ch
int 21h
lp: lea dx,s ;把输入的数据转换成二进制存取在DX中
mov ah,0ah
int 21h
mov dx,0 ;保存数据的结果
mov bx,0
lea si,s
lop: cmp byte ptr[si+2],0Dh
jz lop1
inc bx ;BX计数输入的长度
inc si
jmp lop
lop1: mov cx,bx
inc bx
mov si,bx
mov ax,0
lea di,s1
lop2: mov al,[si]
sub al,30h
mul byte ptr[di]
inc di
add dx,ax
dec si
loop lop2
ret
md: mov ax,0 ;求累加和存放在ax中
cmp dx,100
jbe lop3
jmp err
lop3: add ax,dx
dec dx
jz exit
jmp lop3
exit: ret
err: lea dx,s3
mov ah,09h
int 21h
jmp dm1
code ends
end start
不懂的再来问
‘陆’ 怎样把三个字节数据转化为十进制数据
常用字节为二进制的数,设数字为xyz,方法是x×10的二次方+y×10的一次方+z×10的零次方的出来的数就是是十进制的!
‘柒’ 单字节十进制bcd码加法程序,被加数在h中,加数在h中,要求和放在h中
1、压缩BCD码(一个字节存两位8421BCD码对应的十进制数)加法程序:
MOV AL,12H
MOV BL,34H
ADD AL,BL
DAA
2、非压缩BCD码(一个字节存一位8421BCD码对应的十进制数)加法程序:
MOV AL,02H
MOV BL,04H
ADD AL,BL
AAA
‘捌’ 单片机无符号十进制加法
;51单片机程序如下
CLR C
LOOP:
MOV A, @R0
ADDC A, @R1
DA A
MOV @R0, A
INC R0
INC R1
DJNZ R7, LOOP
END
‘玖’ 求!一道关于单片机10位十进制加法子程序的编程题,帮帮忙啊
;
ORG 0000H
MOV 24H, #12H
MOV 23H, #23H
MOV 22H, #34H
MOV 21H, #45H
MOV 20H, #56H ;10位十进制加数:1223344556。
MOV 29H, #33H
MOV 28H, #44H
MOV 27H, #55H
MOV 26H, #66H
MOV 25H, #77H ;10位十进制被加数:3344556677。
MOV R0, #20H
MOV R1, #25H
MOV R2, #5
CLR C
LOOP:
MOV A, @R0
ADDC A, @R1
DA A
MOV @R0, A
INC R0
INC R1
DJNZ R2, LOOP
SJMP $
END