嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。

嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。,第1张

初值是R3=4么

如果是的话R2,R3的值执行后都是4

AREA test,CODE,READONLY

ENTRY

Loop

MOV R2,#5

MOV R3,#4

MOV R4,#3

SUBS R2,R3,R4,LSR #2

Stop

B Stop

END

使用嵌入式汇编

void F1()

{

long value=10

long list[10]

__asm{

//这里可以使用汇编语音, 如下面一段的运行结果是value=20

mov eax, dword ptr value

mov ebx, eax

add eax, ebx

mov dword ptr value, eax

// 下面一段给数组赋值

mov ecx, 10

lea esi, value

Loop_start:

mov dword ptr [esi], ecx

add esi, 4

dec ecx

jnz LoopStart

in 120 // (?)

}

}

in 我没用过,你自己知道吧。

Debug也很方便,打开"Register"的窗口,可以看到每个寄存器

和Flag的值。 也可以用Watch看每个寄存器的值。例如

(long)ecx

#include<reg51.h>

#include<stdio.h>

#include<string.h>

#define INBUF_LEN 4 //数据长度

unsigned char inbuf1[INBUF_LEN]

unsigned char checksum,count3 , flag,temp,ch

bit read_flag=0

sbit cp=P1^1

sbit DIR=P1^2

int i

unsigned int xdata *RAMDATA/*定义RAM地址指针*/

unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66}

void init_serialcomm(void)

{

SCON=0x50//在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00

ES=1

TMOD=0x21//定时器工作于方式2,自动装载方式

TH0=(65536-1000)%256

TL0=(65536-1000)/256

TL1=0xfd

TH1=0xfd

ET0=1

TR0=1

TR1=1

// TI=0

EA=1

// TI=1

RAMDATA=0x1F45

}

void serial () interrupt 4 using 3

{

if(RI)

{ RI=0

ch=SBUF

TI=1//置SBUF空

switch(ch)

{

case 0x01 :printf("A")TI=0break

case 0x02 :printf("B")TI=0break

case 0x03 :printf("C")TI=0break

case 0x04 :printf("D")TI=0break

default :printf("fg")TI=0break

}

}

}

//向串口发送一个字符

void timer0() interrupt 1 using 3{

// char i

flag++

TH0=0x00

TL0=0x00

if(flag==10)

{// cp=!cp

// for(i=0i<6i++)

P2=0x25

TI=1

temp=*RAMDATA

printf("%c",temp)

TI=0

// RAMDATA--

flag=0

}

}

//主程序

main()

{

init_serialcomm()//初始化串口

//向6264中送数据

{

*RAMDATA=0x33

}

while(1)

{

*RAMDATA=0x33

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11340837.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存