用ARM汇编语言实现下列C语言语句 if (a >= b) x = (a + b) * 5; el

用ARM汇编语言实现下列C语言语句 if (a >= b) x = (a + b) * 5; el,第1张

int main(int argc,char *argv[])

{

// my_daemon()()

int sock_get_ip

struct ifreq ifr_ip

if ((sock_get_ip=socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

printf("扮链socket create failse...GetLocalIp!/厅春孙森陆n")

return 0

}

memset(&ifr_i

//显示123456的程序,这只是整个程序片段

#include "led_ioctl.h"

int Led_123()

{

int led_fd,count

char ret[7] //数组ret[i] 存放送LED显示的数据

//【打开LED设备】

led_fd = open("/dev/led",O_RDWR)

if (led_fd <= 0){

printf("樱判open led device error\n")

return 0

}//含颂巧if

ret[6] = 0xcf//初始化数组数值为 6.

ret[5] = 0x4f//初始化数组数值为 5.

ret[4] = 0x53//初始化数组数值为 4.

ret[3] = 0x5d//初始化数组数值为 3.

ret[2] = 0x9d//初始化数组数值为 2.

ret[1] = 0x50//初始化数谈键组数值为 1.

ioctl(led_fd,IOCTRL_LED_1)

count = write(led_fd,ret+1,1)

ioctl(led_fd,IOCTRL_LED_2)

count = write(led_fd,ret+2,1)

ioctl(led_fd,IOCTRL_LED_3)

count = write(led_fd,ret+3,1)

ioctl(led_fd,IOCTRL_LED_4)

count = write(led_fd,ret+4,1)

ioctl(led_fd,IOCTRL_LED_5)

count = write(led_fd,ret+5,1)

ioctl(led_fd,IOCTRL_LED_6)

count = write(led_fd,ret+6,1)

return 0

}

不懂C语言但稍微懂一点ARM Cortex-M3 汇编

很久没写汇编了,下边这个没调试直接编的不是乱者睁范例,所以肯定写错了

编译器GCC-ARM-NONE-EABI

应该有范例,你还是找范例吧

i: .int 20 @int i=20

a: .int 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 @ 定义A数组

b: .int 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3@ 定义B数组

ldr r0, = i@把20存到R0

xunhuan1: @ if 里面

ldr r1, = a @ 把A数组的首地址存到R1

ldr r2, [r1, r0] @ 取出首地址加20处的数据存嫌敬到R2

ldr r3, = b @ 把B数组的首地哗岁址存到R3

ldr r4, [r3, r0] @取出首地址加20处的数据存到R4

mov r5, # 4 @ 把被乘数存到R5

mul r4, r4, r5 @ R4乘以4 b[i]*4

add r6, r2, r4 @ R2加上R4存到R6 a[i]+b[i]*4

str r6, [r1, r0]@ R6的数据存到A首地址加20的地方

lsrs r0, # 1 @ R0逻辑右移

bne xunhuan @ 判断R0是不是等于0不等于跳到xunhuan

xunhuan: @ while 循环

sub r0, # 1 @ i减1

cmp r0, # 0 @比较R0和0

bge xunhuan1@大于等于跳转xunhuan1


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

原文地址: http://outofmemory.cn/yw/12515340.html

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

发表评论

登录后才能评论

评论列表(0条)

保存