怎么用c51单片机汇编语言编程实现两个数的比较,不相等则继续执行,相等则跳转?

作者&投稿:荣肥 (若有异议请与网页底部的电邮联系)
各位大神 教教我! 汇编中如何实现对地址中的数进行判断是否相同,相同继续执行,不同则跳转 急!急!急!~

先把其中一个数加载到寄存器里,然后与另一个数用cmp指令做比较,接下来使用jnz/jne跳转指令就行了。
dseg segment
data1 db 100
data2 db 100
msg db 'equal!$'
dseg ends

cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax

mov al, data1
cmp al, data2 ;比较
jnz Done ;不等就跳转到Done,相等就往下执行
lea dx, msg
mov ah, 9
int 21h

Done:
mov ah, 4ch
int 21h

cseg ends
end start

MOV AX X1
MOV BX X2
JE/JZ XXX
……
XXX:
……

紧跟在你的CJNE指令后根据你的比较方式再加一条判C指令再次判断或转移就行了。

CJNE A,B,tiao(如果A与B不一样就跳到地址标号tiao执行指令B,若一样就继续执行下一条指令A)
指令A
tiao:指令B

CJNE指令。Compare,Jump if Not Equal。

用keil软件如何将汇编与C语言结合起来一起编写单片机的程序
答:在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法。方法1)在Keil C51的函数中直接插入汇编语句 方法2)按照Keil C51接口规则,编写汇编模块 方法1是利用编译控制命令#pragma asm(用来标识所插入的汇编语句的起始位置) 和 #pragma endasm (用来标识所插入的汇编...

C51单片机汇编语言
答:DEL,DLYRAM是标记号,后面跟有:(冒号)是本汇编行的地址,举个例子:SJMP 这一句,就相当于 Loop:AJMP Loop

...用定时器中断,在P1口实现1S移动一次的流水灯,用汇编语言编写的...
答://晶振12M DSEG AT 30H timetemp: DS 1 LED: DS 1 CSEG AT 00H ORG 0000H LJMP START ORG 000BH LJMP Timer0Interrupt START:MOV SP,#60H MOV timetemp,#20 MOV P1,#0FFH;LED低电平点亮 LCALL InitTimer0 MOV LED,#0FEH LOOP:MOV P1,LED ;add your code here!

有哪位好心人帮帮我,用51单片机汇编语言编写下面的程序。要有注解的...
答:呵呵,我大概给你说说吧,例如MOV指令,执行这条指令需要一个机器周期。DJNZ指令,执行这条指令需要2个机器周期。(一机器周期=1微秒)。你要是用定时器工作的话需要先定义一下TMOD TH TL的数值 这个就用到晶振了了。要先看多少晶振,假如6MHZ,就用12除6,得出来的是2毫秒。在利用计算公式算出你...

51单片机,怎么样使得C语言与汇编语言结合起来?我想在C语言里调用汇编语 ...
答:首先写个H文件,把汇编的函数申明在里面 例如:extern bit plus(iu8 *d_dat,iu8 *s_dat,u8 len);然后,建立ASM文件,例如tool.asm 先指定存储区 ?PR?_plus?TOOL SEGMENT CODE ?PR?固定的,然后是函数名前+下划线,?TOOL 是这个asm的名字,CODE是存储区 然后向外申明函数 PUBLIC _plus ...

用汇编语言编程使51单片机实现6位共阳数码管一位循环显示0-9
答:以下程序实现6位数码管,每一位依次循环显示0--9 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P2,#0FEH MOV A,#00H MOV DPTR,#TAB LOOP:MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC A CJNE A,#0AH,LOOP MOV A,P2 RL A MOV P2,A JB ACC.6,SS1 MOV P2,#0FEH SS1:CLR A SJMP...

C51单片机汇编语言
答:你用的是跳转指令进入程序段,而不是子程序调用,所以不能用RET返回,只能同样跳回去 用LCALL或者ACALL命令调用子程序时会把当前的程序地址压入堆栈当前点,在遇到RET指令时就会把保存的断点地址弹回PC寄存器,继续调用之前的执行,但是JMP系列指令不会保存断点地址,所以RET时就会把堆栈当前点数据装入PC,...

51单片机+ADC0809+LCD1602用汇编语言编程
答:你把这两个程序合起来改下就差不多咯!时间忙 只能把自己以前学的子程序给你咯 ; :1602显示 LCD_RSEQUP2.0 LCD_RWEQUP2.1 LCD_ENEQUP2.2 LCD_DATA EQU P0 ;ORG 0000H AJMP MAIN ORG 0030H ;MAIN:MOV SP,#60H ACALL LCD_INIT ;LCD初始化 MAIN1:ACALL CLR_LCD...

51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下...
答:程序1:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#5FH LOOP:MOV A,P2 MOV B,A MOV P0,A MOV P1,#0FFH LOOP1:LCALL DELAY MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 CJNE A,B,LOOP SJMP LOOP1 DELAY:MOV R2,#60 DELAY1:MOV R3,#...

51单片机,求用汇编语言编写延时1小时的子程序,要精确到秒级别
答:这个可以做到,如果晶振是12M的话,一下方法可以实现延时1小时,精确度在秒级别。DELAY1H:MOV R7,#180 ;1/1000000 DLY1H:LCALL DELAY_20S ;180*19.960603s +2*180 DJNZ R7,DLY1H ;2*180/1000000 RET 2/1000000 共延时时间:3592.9s误差为7.1秒,如果再精确的话,再加一点延时...