我想在.bss上開辟一段空間,然后將結(jié)果存放到這段空間(長度為100字)放的數(shù)據(jù)放在ACC里面,我有一個(gè)問題就是怎么將結(jié)果存到存儲(chǔ)空間里面去,然后再實(shí)現(xiàn)地址積存器的自加,直到需要的所有的數(shù)據(jù)全部存儲(chǔ)完畢
我是這樣定義這個(gè)空間的
大家?guī)臀铱纯?a target="_blank">1155739655.asm
2407的匯編存儲(chǔ)問題(匯編的)
全部回復(fù)(8)
正序查看
倒序查看
@youngboy
可以使用輔助寄存器,通過循環(huán)來實(shí)現(xiàn).數(shù)據(jù)再多也可以方便存儲(chǔ)如:LAR AR0,#MATRIX ;傳送數(shù)據(jù)存儲(chǔ)的地址 LAR AR1,#215;216個(gè)數(shù)據(jù) LACC #DATAS_ ;傳送數(shù)據(jù)的地址 MAR *,AR0INIT_TBL: TBLR *+,AR1 ;下一個(gè) ADD #1 ;下一個(gè)地址 BANZ INIT_TBL,AR0
我覺得你最好定義一個(gè)100的數(shù)組,這樣的好處是這個(gè)為初始化的數(shù)組就存放在 bss 段了,將結(jié)果放在數(shù)組中,再實(shí)現(xiàn)數(shù)組累加,應(yīng)該能作出來
0
回復(fù)
@youngboy
可以使用輔助寄存器,通過循環(huán)來實(shí)現(xiàn).數(shù)據(jù)再多也可以方便存儲(chǔ)如:LAR AR0,#MATRIX ;傳送數(shù)據(jù)存儲(chǔ)的地址 LAR AR1,#215;216個(gè)數(shù)據(jù) LACC #DATAS_ ;傳送數(shù)據(jù)的地址 MAR *,AR0INIT_TBL: TBLR *+,AR1 ;下一個(gè) ADD #1 ;下一個(gè)地址 BANZ INIT_TBL,AR0
有個(gè)問題想請(qǐng)教一下:我要在.bss 開辟一段長為200字的數(shù)據(jù)區(qū),使用 下面兩條條語句那條是合適的 MP/MC=1
下面那個(gè)程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的 ADRESULT這段存儲(chǔ)空間里面去,還是兩個(gè)都不可以,需要怎么修改一下.麻煩你幫我看看了:)
.bss ADRESULT 200(這個(gè)數(shù)據(jù)段是不是在b1里面?)
下面的程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的 ADRESULT這段存儲(chǔ)空間里面去嗎
LAR AR0,#ADRESULT
LAR AR1,#199
LACC #RESULT
MAR *,AR0
INIT_TBL
TBLR *+,AR1
ADD #1
BANZ INIT_TBL,AR0
ADRESULT .usect "adresult" 200(這個(gè)數(shù)據(jù)段也是在b1里面嗎)
LAR AR0,#ADRESULT
LAR AR1,#199
LACC #RESULT
MAR *,AR0
INIT_TBL
TBLR *+,AR1
ADD #1
BANZ INIT_TBL,AR0
下面那個(gè)程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的 ADRESULT這段存儲(chǔ)空間里面去,還是兩個(gè)都不可以,需要怎么修改一下.麻煩你幫我看看了:)
.bss ADRESULT 200(這個(gè)數(shù)據(jù)段是不是在b1里面?)
下面的程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的 ADRESULT這段存儲(chǔ)空間里面去嗎
LAR AR0,#ADRESULT
LAR AR1,#199
LACC #RESULT
MAR *,AR0
INIT_TBL
TBLR *+,AR1
ADD #1
BANZ INIT_TBL,AR0
ADRESULT .usect "adresult" 200(這個(gè)數(shù)據(jù)段也是在b1里面嗎)
LAR AR0,#ADRESULT
LAR AR1,#199
LACC #RESULT
MAR *,AR0
INIT_TBL
TBLR *+,AR1
ADD #1
BANZ INIT_TBL,AR0
0
回復(fù)
@snoopopy415
有個(gè)問題想請(qǐng)教一下:我要在.bss開辟一段長為200字的數(shù)據(jù)區(qū),使用下面兩條條語句那條是合適的 MP/MC=1下面那個(gè)程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的ADRESULT這段存儲(chǔ)空間里面去,還是兩個(gè)都不可以,需要怎么修改一下.麻煩你幫我看看了:).bss ADRESULT 200(這個(gè)數(shù)據(jù)段是不是在b1里面?)下面的程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的ADRESULT這段存儲(chǔ)空間里面去嗎LAR AR0,#ADRESULTLAR AR1,#199LACC#RESULTMAR *,AR0INIT_TBL TBLR *+,AR1 ADD #1 BANZ INIT_TBL,AR0ADRESULT .usect "adresult" 200(這個(gè)數(shù)據(jù)段也是在b1里面嗎)LAR AR0,#ADRESULTLAR AR1,#199LACC#RESULTMAR *,AR0INIT_TBL TBLR *+,AR1 ADD #1 BANZ INIT_TBL,AR0
一般的將bss段放在數(shù)據(jù)存儲(chǔ)器得外部 RAM,地址一般分配為0X8000,長度為0x7ff0,你上面的第二個(gè)程序的usect,應(yīng)該是你自己定義的段吧,那根據(jù)你的需要可以定義到B1或外部RAM,一般的將B0B1合起來用做軟件堆棧,所以你那個(gè)段放在外部RAM或者B2或者SARAM.
0
回復(fù)
@snoopopy415
有個(gè)問題想請(qǐng)教一下:我要在.bss開辟一段長為200字的數(shù)據(jù)區(qū),使用下面兩條條語句那條是合適的 MP/MC=1下面那個(gè)程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的ADRESULT這段存儲(chǔ)空間里面去,還是兩個(gè)都不可以,需要怎么修改一下.麻煩你幫我看看了:).bss ADRESULT 200(這個(gè)數(shù)據(jù)段是不是在b1里面?)下面的程序可以實(shí)現(xiàn)將所采集到的值存儲(chǔ)到所開辟的ADRESULT這段存儲(chǔ)空間里面去嗎LAR AR0,#ADRESULTLAR AR1,#199LACC#RESULTMAR *,AR0INIT_TBL TBLR *+,AR1 ADD #1 BANZ INIT_TBL,AR0ADRESULT .usect "adresult" 200(這個(gè)數(shù)據(jù)段也是在b1里面嗎)LAR AR0,#ADRESULTLAR AR1,#199LACC#RESULTMAR *,AR0INIT_TBL TBLR *+,AR1 ADD #1 BANZ INIT_TBL,AR0
我覺得這兩個(gè)程序都有問題,問題在那個(gè)表讀指令是把定義在程序空間的一段值給200數(shù)組ADRESULT,但是你的值是采樣來的,值不應(yīng)該放在程序空間,比如我事先定義一個(gè)數(shù)據(jù)段,data.下面放200個(gè)常數(shù)值,再讀這個(gè)表是沒問題的,因?yàn)榉彩浅跏蓟亩味挤旁诔绦蚩臻g,為初始化的放在數(shù)據(jù)空間,所以你這個(gè)表讀指令有問題,除非你的數(shù)據(jù)來源就在程序空間
0
回復(fù)
@kcw_2005
我覺得這兩個(gè)程序都有問題,問題在那個(gè)表讀指令是把定義在程序空間的一段值給200數(shù)組ADRESULT,但是你的值是采樣來的,值不應(yīng)該放在程序空間,比如我事先定義一個(gè)數(shù)據(jù)段,data.下面放200個(gè)常數(shù)值,再讀這個(gè)表是沒問題的,因?yàn)榉彩浅跏蓟亩味挤旁诔绦蚩臻g,為初始化的放在數(shù)據(jù)空間,所以你這個(gè)表讀指令有問題,除非你的數(shù)據(jù)來源就在程序空間
謝謝你一直這么認(rèn)真的回復(fù),其實(shí)我對(duì).usect和.bss這兩個(gè)分配弄的不是很清楚,我一直以為它們總是分配在數(shù)據(jù)存儲(chǔ)區(qū)里,和程序存儲(chǔ)區(qū)沒有什么聯(lián)系,我在一本書上看到這樣去定義一個(gè)轉(zhuǎn)換A/D的結(jié)果積存器
.data
ADRESULT .word 00h(這是將ADRESULT放在程序存儲(chǔ)區(qū),同時(shí)其初始值為0)
然后在存儲(chǔ)轉(zhuǎn)換結(jié)果的時(shí)候是先將結(jié)果放在ACC里面再采用下面的語句
SACH ADRESULT (A/D的采樣結(jié)果放在ACC里面的高十六位,這條語句直接取其高位放在ADRESULT)
我就試著照這樣去做了,但是在ADRESULT里面怎么也看不到采樣的結(jié)果值,這是為什么?
如果我想將這200個(gè)數(shù)組定義在b1里面該怎么去做,可以給點(diǎn)提示一下嗎?
.data
ADRESULT .word 00h(這是將ADRESULT放在程序存儲(chǔ)區(qū),同時(shí)其初始值為0)
然后在存儲(chǔ)轉(zhuǎn)換結(jié)果的時(shí)候是先將結(jié)果放在ACC里面再采用下面的語句
SACH ADRESULT (A/D的采樣結(jié)果放在ACC里面的高十六位,這條語句直接取其高位放在ADRESULT)
我就試著照這樣去做了,但是在ADRESULT里面怎么也看不到采樣的結(jié)果值,這是為什么?
如果我想將這200個(gè)數(shù)組定義在b1里面該怎么去做,可以給點(diǎn)提示一下嗎?
0
回復(fù)
@snoopopy415
謝謝你一直這么認(rèn)真的回復(fù),其實(shí)我對(duì).usect和.bss這兩個(gè)分配弄的不是很清楚,我一直以為它們總是分配在數(shù)據(jù)存儲(chǔ)區(qū)里,和程序存儲(chǔ)區(qū)沒有什么聯(lián)系,我在一本書上看到這樣去定義一個(gè)轉(zhuǎn)換A/D的結(jié)果積存器 .dataADRESULT .word 00h(這是將ADRESULT放在程序存儲(chǔ)區(qū),同時(shí)其初始值為0)然后在存儲(chǔ)轉(zhuǎn)換結(jié)果的時(shí)候是先將結(jié)果放在ACC里面再采用下面的語句SACH ADRESULT(A/D的采樣結(jié)果放在ACC里面的高十六位,這條語句直接取其高位放在ADRESULT)我就試著照這樣去做了,但是在ADRESULT里面怎么也看不到采樣的結(jié)果值,這是為什么?如果我想將這200個(gè)數(shù)組定義在b1里面該怎么去做,可以給點(diǎn)提示一下嗎?
我認(rèn)為在data段存是可以的,累加器的高十六位放在ADRESULT中,你應(yīng)該再看看之前的ACC中值的格式是Q多少,我給你會(huì)過了,在bss段中存200個(gè),用你以前的表讀指令好像不行
0
回復(fù)