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位一直...