ATS51单片机汇编语言的四位计算器,注意汇编语言

发布网友 发布时间:2022-04-22 09:43

我来回答

1个回答

热心网友 时间:2023-07-09 17:16

你好!我编过一个程序,汇编调C,运行成功,最多可实现五位计算。如果要HEX,给我邮箱发给你。
#include <reg51.h>
#include <absacc.h>
#include<math.h>
#pragma NOREGPARMS
#define g DBYTE[0x30]
#define sDBYTE[0x31]
#define bDBYTE[0x32]
#define qDBYTE[0x33]
#define w DBYTE[0x34]
#define sw DBYTE[0x35]
#define bw DBYTE[0x36]
#define qw DBYTE[0x37]

#define ww DBYTE[0x39]
#define flag DBYTE[0x20]

unsignedlong data a0 _at_ 0x42;
unsignedlong data a1 _at_ 0x46;
unsigned long data a2 _at_ 0x4A;
voidcount()
{
unsignedint temp;
if(ww==1)
{
a0=w*10000+q*1000+b*100+s*10+g;
}
if((flag>0)&&(!ww))
{
a1=w*10000+q*1000+b*100+s*10+g;
if(flag==1)a2=a1+a0;
if(flag==2)a2=a0-a1;
if(flag==3)a2=a1*a0;
if(flag==4)a2=a0/a1;
g=a2%10;
temp=a2/10;
s=temp%10;
temp=temp/10;
b=temp%10;
temp=temp/10;
q=temp%10;
w=temp/10;
}
}
EXTRNCODE(COUNT)
ORG 0000H
D1:MOV R0,#30H
MOV R1,#8
D2: MOV @R0,#0
INC R0
DJNZ R1,D2
D3: LCALL DISPLAY
MOV P0,#0FH
MOV A,P0
CJNE A,#0FH,D5
LJMP D3
D5:MOV 40H,A
MOV P0,#0F0H
MOV A,P0
MOV 41H,A
D6:MOV P0, #0F0H
MOV A, P0
CJNE A, 41H, D7
CALL DISPLAY
JMP D6
D7: MOV A,41H
ADD A,40H
CJNE A,#0EEH,D8
MOV 40H,#1
JMP D24
D8: CJNE A,#0DEH,D9
MOV 40H,#2
JMP D24
D9: CJNE A,#0BEH,D10
MOV 40H,#3
JMP D24
D10: CJNE A,#7EH,D11
MOV 40H,#4
JMP D24
D11: CJNE A,#0EDH,D12
MOV 40H,#5
JMP D24
D12: CJNE A,#0DDH,D13
MOV 40H,#6
JMP D24
D13: CJNE A,#0BDH,D14
MOV 40H,#7
JMP D24
D14: CJNE A,#7DH,D15
MOV 40H,#8
JMP D24
D15: CJNE A,#0EBH,D16
MOV 40H,#9
JMP D24
D16: CJNE A,#0DBH,D17
MOV 40H,#0
JMP D24
D17: CJNE A,#0BBH,D19
MOV 39H,#1
MOV 20H,#1
CALL D100
MOV 39H,#0
D19: CJNE A,#7BH,D20
MOV 39H,#1
MOV 20H,#2
CALL D100
MOV 39H,#0
D20: CJNE A,#0E7H,D21
MOV 39H,#1
MOV 20H,#3
CALL D100
MOV 39H,#0
D21: CJNE A,#0D7H,D22
MOV 39H,#1
MOV 20H,#4
CALL D100
MOV 39H,#0
D22: CJNE A,#0B7H,D23
CALL D100
LJMP D3
D23: LJMP D1
D24: MOV R0,#30H
MOV R1,#8
MOV A,40H
D25: XCH A,@R0
INC R0
DJNZ R1,D25
JMP D3
D100: PUSH PSW
PUSH ACC
LCALL COUNT
POP ACC
POP PSW
RET
DISPLAY:
MOV A,37H
JZ LED6
ADD A,#70H
MOV P1,A
CALL DELAY

LED6:MOV A,36H
JB36H,DIS6
JZLED5
DIS6: ADD A,#60H
MOV P1,A
CALL DELAY

LED5:MOV A,35H
JB 35H,DIS5
JZLED4
DIS5:ADD A,#50H
MOV P1,A
CALL DELAY

LED4:MOV A,34H
JB34H,DIS4
JZLED3
DIS4:ADD A,#40H
MOV P1,A
CALL DELAY

LED3:MOV A,33H
JB33H,DIS3
JZLED2
DIS3:ADD A,#30H
MOV P1,A
CALL DELAY

LED2:MOV A,32H
JB 32H,DIS2
JZ LED1
DIS2:ADD A,#20H
MOV P1,A
CALL DELAY

LED1:MOV A,31H
JB 31H,DIS1
JZ LED0
DIS1:ADD A,#10H
MOV P1,A
CALL DELAY

LED0:MOV A,30H
MOV P1,A
CALL DELAY
RET

DELAY: MOV R7,#02
D30: MOV R6,#248
DJNZ R6,$
DJNZ R7,D30
RET
END追问我的邮箱是1437296377@qq.com,你的是4X4矩阵键盘输入吗,我要4X4矩阵键盘输入的,谢谢!是的话发过来,50分如数馈赠,谢谢!

追答你好,我的就是4X4矩阵键盘输入的,你可以自己试试再给分,我的程序都是通过硬件试验过的,绝不是网上粘贴的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com