单片机汇编语言程序100例(单片机汇编语言编程100个无符号数,放在外部RAM1000开始的区域,编程统计其中的正数)

本文目录
- 单片机汇编语言编程100个无符号数,放在外部RAM1000开始的区域,编程统计其中的正数
- 51单片机定时器的汇编语言程序编程,
- 用单片机汇编语言编写1+2+3 +‥‥‥+99+100的求和运算程序, 结果用十进制显示在单片机实验系统数码管上
- 单片机乘法和除法指令及汇编语言程序举例
- 单片机汇编语言程序设计
- 51单片机用计数器中断实现100以内的按键计数,汇编语言程序
单片机汇编语言编程100个无符号数,放在外部RAM1000开始的区域,编程统计其中的正数
;题目,让人看不懂。
;既然是“无符号数”,怎么还要统计“正数”?
;统计结果,放到何处,也不明不白的。
MOV DPTR, #1000
MOV R2, #0
MOV R3, #0
MOV R4, #100
LOOP:
MOVX A, @DPTR
INC DPTR
JB ACC.7, FU ;符号为1转移,即负数转移
MOV A, R2
ADD A, #1
MOV R2, A
MOV A, R3
ADDC A, #0
MOV R3, A
FU:
DJNZ R4, LOOP
RET
;正数的个数在R3R2中。
;完
51单片机定时器的汇编语言程序编程,
这么简单的要求,不用大动干戈。
看看下面的程序,是不是最简单:
ORG 0000H
SETB TR0 ;启动T0
MOV R2, #250 ;定时计数初值
LOOP:
MOV TH0, #(8192 - 8000) / 32 ;定时8ms
MOV TL0, #(8192 - 8000) MOD 32
JNB TF0, $ ;等待8ms
CLR TF0
DJNZ R2, LOOP ;每隔8ms,R2减一次一
CPL P1.0 ;R2为0则LED亮灭转换
LJMP 0000H
END
本程序,已经实验成功。
用单片机汇编语言编写1+2+3 +‥‥‥+99+100的求和运算程序, 结果用十进制显示在单片机实验系统数码管上
用C语言可以实现的代码如下:
#include
typedef unsigned int uint;
typedef unsigned char uchar;
uchar smgcode={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff};//共阳数码管
uchar smgbit={0xfe,0xfd,0xfb,0xf7};
uchar value={0,0,0,0};
void delay(uint x)//延时函数
{
uchar i;
while(x--)for(i=0;i《120;i++);
}
void main(void)
{
uchar i,j;
uint s=0;
for(i=1;i《=100;i++)
s+=i; value=s;
value=s0/10;
value=s00/100;
value=s000/1000;
while(1)
{
for(j=0;j《4;j++)
{
P1=smgbit;
P2=smgcode;
delay(10);
}
}
}
单片机乘法和除法指令及汇编语言程序举例
1.乘法:
MUL AB ;(A)×(B),积的低8位在A中,积的高8位在B中;
C总为0。
2.除法:
DIV AB ;(A)÷(B),商在A中,余数在B中。
若(B)= 0 ,则结果不定,(OV)= 1,(C)= 0。
例、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单
元,十位数和个位数压缩后存于30H单元中。
解;MOV B,#100
DIV AB
MOV 31H,A
MOV A,#10
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV 30H,A
单片机汇编语言程序设计
ORG 0000H
MAIN:
MOV DPTR,#3000H
CLR R0
CLR R1
CLR R2
MOV R3,#100
LOOP:MOV A,@DPTR
CLR C
CJNE A,#0H,LOOP1
INC R0
DJNZ R3,LOOP
LOOP1:RL A
JC FUSHU
INC R1
DJNZ R3,LOOP
FUSHU:INCR2
DJNZ R3,LOOP
MOV ONE,R1
MOV TWO,R0
MOV THREE,R2
END
哈哈,写完了,顶一个吧!
51单片机用计数器中断实现100以内的按键计数,汇编语言程序
试试下列程序:
ORG 0000H
JMP START
ORG 000BH
JMP T0_INT
;------------------------------
START:
MOV TMOD, #06H
MOV TH0, #255
MOV TL0, #255
MOV IE, #82H
SETB TR0
MOV R2, #0
MOV R3, #0
MOV DPTR, #TAB
;------------------------------
M_LOOP:
MOV A, R3
MOVC A, @A + DPTR
MOV P2, A
MOV A, R2
MOVC A, @A + DPTR
MOV P0, A
SJMP M_LOOP
;------------------------------
T0_INT:
JNB P3.4, T0_INT
INC R3
CJNE R3, #10, T0_END
MOV R3, #0
INC R2
CJNE R2, #10, T0_END
MOV R2, #0
T0_END:
RETI
;------------------------------
TAB: DB 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
;------------------------------
END

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






