基礎差,簡單的51查表程式,求高手解釋每一步,謝謝啦

時間 2022-03-14 00:55:11

1樓:匿名使用者

程式一 求31h中的平方到31h

mov a,30h ;// 將30h中的內容送累加器a

mov dptr,#3000h; //偏移暫存器送值 dptr=3000h

movc a,@a+dptr ; // 將 地址a+dptr=30h+3000h 中的內容送到 累加器a,即進行差表,表的//起始地址為dptr=3000h ,偏移量 a=(30h),注意此處的movc

mov 31h,a; //將 a中的內容 放回 地址31h ,即 (31h)=a

sjmp $;//跳轉

3000h:db 0,1,4,9,16 ;// 表的內容 起始與地址3000h

程式二 類似,只是多了一個迴圈,和一個比較判斷。

2樓:做而論道

學習查表指令,得先看看什麼是表。

org 3000h

db 0, 1, 4, 9, 16...

這句說明,在 3000h 開始的地方,依次存放了:0的平方、1的平方...

即,從 3000h 往下,取第一位元組,就是1的平方;取第二位元組,就是2的平方;...

這就是《平方表》。

查表指令:

movc a,@a+dptr (其中 dptr = 3000h)

這句說明,a 是幾,就從 3000h 開始,取第幾個。

從平方表裡面,取出來的,就是幾的平方。

3樓:匿名使用者

程式1: 你寫的題目有小問題, 應該是求放在30h單元中數的平方,送到31h單元中.

3000h到3004h中存放: 0,1,4,9,16

也就是對應0-4的5個數的平方

mov a,30h ;從30h單元中取數,送到累加器a中

movc a, @a+dptr ; 從(a)+3000h單元中取出對應的平方值.

如30h單元中存放3, 則從(3+3000h)單元中取出的是 '9'.

mov 31h,a ;把'9'存到31h單元中

程式2: 同上類似

還是你自己做為好. 將收穫更大.

4樓:匿名使用者

程式1:將30h單元的數讀入累加器a;查表的首地址3000h傳送到dptr;根據a的內容查表,將結果傳送到a;將a的資料傳送到31h;本地迴圈;0,1,2,3,4的平方。

程式2 :將初始立即資料傳送到31h記憶體單元;lop1:將31h單元的資料傳送到a;將2300h傳送到dptr;根據a的內容查表,並將結果傳送到a;比較a和30h單元的內容是否相等,不相等跳轉到lop;本地迴圈;lop:

將31h單元的內容加1;跳轉到lop1;資料0,1,2,3,4,5的平方。

(這裡資料6 改為9,題目錯了)

求高手幫忙寫個c語言寫的51程式

科技藝術生活 為什麼要用24c02儲存,要求上電回零,即初始化了,那麼24c02不就沒有用了麼,再說了,許多微控制器自帶eeprom 你這用stc15f104 8腳 微控制器就可以了, 超級 在梯形圖中,將y0和y1的常閉觸點分別與對方的線圈串聯,可以保證它們不會同時為on,因此km1和km2的線圈...

求51微控制器的簡單數字鐘。附上彙編程式或C也行

當小姑娘們長大 不該實現選擇痛苦的美好目標,如果你一心要愛我,那就別為了麼,它窺視充滿空缺的巢穴 而亞歷山大的人,像平常一樣,你是秋收金黃遍的哈哈 學過幾天,我自己編過,但是失敗了。看看大牛的吧,沒有按鍵功能,只能走動,我的微控制器壞了,忘記怎麼加 了 時鐘程式,大家是否想到用定時器,對,也可用定時...

簡單的C51微控制器組合語言程式分析

羅門大佬 樓上說的有理,但是即使刪去ljmp main也不行,因為在中斷時它把ea關了,也就不會中斷了。其實不用關ea,你把clr ea也刪去就可以執行。只要你的手沒有中斷服務程式快就會有中斷。每次按都有。你試一下在開發板上執行,應該可以的。原因是當你外中斷置低電平時,就會進入中斷程式。執行完就會自...