微控制器程式設計 將位元組的數乘以10。3種方法考場中急

時間 2022-08-13 13:05:08

1樓:匿名使用者

c://sol為結果,var為變數

1、sol=0;for(i=0;i<10;i++) sol+=var;

2、sol = var<<3 + var<<1;

3、sol = var*10;

彙編:sol暫存器儲存結果,var為變數,假設1個位元組的數為無符號數,乘積結果不超過256

1、xor a

mov r1,#10

loop:add a,#var

djnz r1,loop

mov sol,a

ret2、mov a,#var

rl a

rl a

rl a

mov r1,a

mov a,#var

rl a

add a,r1

mov sol,a

ret3、mov a,#var

mov b,#10

mul ab

mov sol,aret

2樓:匿名使用者

一 一個位元組的數是0-256 還是ask碼的一個數?

二 用匯編還是c?

3樓:匿名使用者

i<<3 + i<<1;

i*10;

4樓:匿名使用者

1樓典型的**一個位元組是8位,最大的值蠻是255吧,總共256個數,還0-256.我呸,還彙編還是c。

微控制器組合語言。編寫對一個多位元組數乘以10的運運算元程式

5樓:匿名使用者

其實這個可以分解為:x*10=x*8+x*2,相當於x<<3+x<<1;即,這個數左移三位加左移一位。

輸入:r0,n,即首位元組地址和位數

mul10:

mov a,r0

mov b,a

add a,#10h

mov r1,a

mov a,@r0

mov r2,#n

mov r3,#3

clr 00h

mul100:

clr c

mul101:

rlc a

mov @r0,a

jb 00h,mul1011

mov @r1,a

inc r1

mul1011:

inc r0

djnz r2,mul101

clr a

rlc a

mov @r0,a

mov @r1,a

mov a,b

mov r0,a

add a,#10h

mov r1,a

setb 00h

djnz r3,mul100

mov r2,#(n+1)

clr c

mul102:

mov a,@r0

addc a,@r1

mov @r0,a

inc r0

inc r1

djnz r2,mul102ret

6樓:無線開發工程師

x*10=x*(8+2);沒乘法指令的這樣最快。

求一個微控制器的程式設計題

7樓:晏有情

用匯編比較簡單,可以直接定址。mov a,30h,再判斷正負,正數:mov 40h,a;負數:mov 50h,a。

用c的話,先定義指標指向30h,40h及50h的單元,比如

char *pi=0x0030;char *zheng=0x0040;char *fu=0x0050;char i=0;

while(i<10) //再判斷正負

汗,不知不覺寫出來了,本來只是想提示一下。。。

判斷方法:首先負數在記憶體中儲存的是補碼,這樣我們就可以直接判斷第7位是否為1,為1表示該ram裡存的是負數,反之則為正數。

8樓:蒼莽塞外

org 0000h

sjmp main

org 0040h

main:mov r2,#40h ;r2用作計量正數的地址

mov r3,#50h ;r3用作計量負數的地址

mov r0,#30h ;r0用作計量陣列的地址

lp4: cjne @r0,#00h,lp0 ;這十個數中為零的數,不儲存,接著判斷下一個數

sjmp lp1

lp0:mov 22h,@r0 ;不為零的數放在記憶體地址為22h的單元中,通過判斷最高位來判斷正負

jb 17h,lp2 ;如果最高位為1,則為負數,在lp2程式段中把負數依次儲存;

sjmp lp3 ;如果最高位為0,則為正數,在lp3程式段中把正數依次儲存。

lp2:mov a,r3

mov r1,a

mov @r1,22h

inc r3 ;存取負數的單元地址依次加一

sjmp lp1

lp3:mov a,r2

mov r1,a

mov @r1,22h

inc r2 ;存取正數的單元地址依次加一

lp1:inc r0 ;存放陣列的單元地址依次加一

cjne r0,#3ah,lp4end

在微控制器中怎麼把一個位元組的最高位賦給一個變數?

9樓:

uchar dat, a;

a = (dat & 0x80) >> 7 ;

10樓:

引用樓上的

uchar dat, a;

a=dat<<1;

c語言中怎樣讀取一個8位位元組某一位的簡單

11樓:匿名使用者

這個我對微控制器的程式設計不算很瞭解,不過這條語句的執行時間已經很少很少了,似乎沒有必要改進了,這只是我的看法

12樓:幽黯之林

bit a;

a=(adcpsra)&(0x08);

比如adcpsra=11011000,和

00001000位與一下,就可以把該位取出來,結果是1,如果adcpsra=11010000,位與一下就是0,我說的對嗎

13樓:匿名使用者

哈哈!還沒有這種函式的

14樓:匿名使用者

優化一下

if((adcsra>>4) & 1)

4是位置,可修改

求微控制器組合語言怎樣程式設計才能實現將一個十六進位制數轉換為十進位制數 20

15樓:匿名使用者

用除法例如 0xff 轉換成十進位制數,百位十位個位分別存在r1、r2、r3中

在51微控制器中暫存器a中的數除以暫存器b中的數,商存在a,餘數存在bmov a,#0ffh

mov b,#100

mul a,b

mov r1,a //存百位mov b,a

mov b,#10

mul a,b

mov r2,a //存十位mov r3,b //存個位

16樓:

mov r6,#00h;存轉化後的數的低位mov r5,#00h;存轉化後的數的高位mov r7,#0ffh;為要轉化的

mov a,r7

cjne a,#00h,loop;判斷要轉化的數是否為0ajmp loop1

loop;mov a,r6

add a,#01h

da a

mov r6,a

addc a,#00h

da a

mov r5,a

djnz r7,loop

loop1:sjmp $

17樓:做而論道

一樓的,是在什麼地方抄的吧?文字註釋,看著眼熟。

呵呵,原來是我以前寫的答案。

18樓:匿名使用者

你確定你要的是十六進位制轉換成十進位制的程式?不是二進位制轉成十進位制的嗎?微控制器中的資料可都是二進位制的,只是通常用十六進位制表示罷了,我以前也犯過這個錯誤

51微控制器程式設計如何把一個字串裡的數字提取出來並轉化成浮點數?

19樓:匿名使用者

這個的話是可以的

內。容#include

#define uchar unsigned charuchar code table="abcd12.5";

main()

微控制器程式設計題:有三個無符號單位元組數分別存在於40h,41h,42h中找出最大的數,並存於43h中。

20樓:匿名使用者

第一個:

mov r0,#30h

mov b,#0

lp:mov a,@r0

cjne a,b,lp1

lp1:

jc,lp2

mov b,a

lp2:

inc r0

cjne r0,#3ah,lp

mov a,bret

51微控制器多位元組除法彙編程式,51微控制器(彙編)怎麼實現雙位元組除以單位元組的除法運算,求程式帶註釋,謝謝!

電子粉絲 不會,應根據進位標誌來處理 51微控制器 彙編 怎麼實現雙位元組除以單位元組的除法運算,求程式帶註釋,謝謝! jtya0 equ 50h jtya1 equ 51h jtya2 equ 52h jtya3 equ 53h jtya4 equ 54h jtya5 equ 55h jtya6 ...

微控制器給電腦傳送位元組的十六進位制數,這個數該存放在什麼型別的變數裡呢

1。串列埠傳送 微控制器這裡很簡單 設好波特率後,只要一條mov sbuf,a即可將累加器的內容 一個位元組 送到串列埠。2。資料格式 在微控制器這裡,全是以位元組方式執行的,更大的數要多位元組拼裝 3。在vb中,串列埠接收要選用 位元組 方式,不要用 字串 方式,這樣可以很好的和微控制器配合。4。...

高分求微控制器多點溫度檢測系統的程式設計

幫你頂一下.做這個只給分不給錢是很難的.微控制器多點溫度控制系統設計的程式設計 微控制器的多點溫度控制系統 dsl8820溫度感測器的內部儲存器包括9 b高速暫存ram和1 b非易失性的可電擦除的e2prom,後者存放高溫度和低溫度觸發器th,tl和結構暫存器,該位元組第7位 tm 為0,低5位一直...