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也刪去就可以執行。只要你的手沒有中斷服務程式快就會有中斷。每次按都有。你試一下在開發板上執行,應該可以的。原因是當你外中斷置低電平時,就會進入中斷程式。執行完就會自...