1樓:匿名使用者
片外ram資料的讀寫需要用到資料指標dptr和指令movx,100個位元組之和不會超過兩個位元組,所以r7r6保持是足夠了,不用擔心溢位問題,以下是程式**:
sum:
mov dptr,#1000h
mov r2,#100
mov r7,#0
mov r6,#0
lp:movx a,@dptr
add a,r6
xch a,r6
clr a
addc a,r7
mov r7,a
inc dptr
djnz r2,lp
ret(這位高質審核者,我想你不是太懂微控制器吧,這段程式就是原創,我還不至於去複製別人的這麼簡單的**,那點功夫這程式早就寫好了。)
2樓:修者世界
100個單位元組數之和兩個位元組足夠存放了,該題可以用乙個迴圈來實現。先將r7r6清零,之後逐步取出資料與低八位r6相加,進製與r7相加就可以了;**如下:
sum:
mov dptr,#1000h ;資料指標送dptr
mov r2,#100 ;資料個數送r2
mov r6,#0
mov r7,#0 ;清零r6r7
loop:
movx a,@dptr ;從ram中取數
add a,r6 ;與低八位相加
mov r6,a ;結果回送低八位
clr a ;累加器清零
addc a,r7 ;與高八位帶進製相加
mov r7,a ;結果回送高八位
inc dptr ;資料指標加1
djnz r2,loop ;如果100個數未取完則繼續ret
3樓:古爾格
mov r6, #0
mov r7, #0
mov r2, #100
mov dptr, #1000h
loop:
movx a, @dptr
add a, r6
mov r6, a
clr a
addc a, r7
mov r7, a
inc dptr
djnz r2, loop
nopsjmp $end
4樓:匿名使用者
org 0030h
mov dptr, #1000h
mov r2, #100
mov r7,#0
mov r6,#0
next: movx a,@dptr
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
inc dptr
djnz r2,next
sjmp $end
5樓:匿名使用者
mov dptr,#1000h
mov r0,#64h
clr a
mov r6,a
mov r7,a
ppp:movx a,@dptr
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
inc dptr
djnz r0,ppp
sjmp $
6樓:匿名使用者
:mov dptr, #1000h
mov a, #55h
mov r2, #100
loop:
movx @dptr, a
inc dptr
djnz r2, loop
sjmp $
end請參考
7樓:奧貝利科斯
org 0000h
ljmp main
main:
mov r6,#00h
mov r7,#00h
mov dptr,#1000h
mov r1,#100;
loop:
clr a
movx a,@dptr
mov r3,a
clr a
mov a,r6
add a,r3
mov r6,a
clr a
mov a,r7
addc a,#0h
mov r7,a
inc dptr
djnz r1,loop
endkeil8051核心編譯通過
8樓:匿名使用者
org 0000h
ljmp start
org 0030h
start:
mov dptr,#1000hmov r6,#00h
mov r7,#00h
mov r5,#100 ;位元組數loop:
movx a, @dptr
add a,r6
mov r6,a
jnc next
inc r7
next:
inc dptrdjnz r5,loop
sjmp $end
編寫一程式如何實現將1000h單元開始的100個單元的資料轉移到2000h開始的單元中?
9樓:娛樂小八卦啊
程式設計**如下:
org 0000h
mov dptr,#1000h ;給源資料塊位址指標dptr賦初值
mov p2, #20h ;給目的資料塊位址指標p2和r0賦初值
mov ro,#00h
loop: movx a, @dptr .
movx @ro, a .
inc dptr
inc ro
cjne ro,#64h, loop
sjmp $
擴充套件資料
mcs-51微控制器主要由下列部件組成:1個8位cpu;1個片內振盪器及時鐘電路;4kb rom程式儲存器,256bram;21個特殊功能暫存器。
2個1 6位定時/計數器;4個8位並行i/o口及1個可程式設計全雙工序列介面;可定址64kb的外部程式儲存器空間;可定址64kb的外部資料儲存器空間;5個中斷源、兩個優先順序中斷巢狀中斷結構。
mcs-51微控制器內部有兩個16位可程式設計的定時/計數器,簡稱定時器0 (t0) 和定時器1 (t1) 。它們分別由方式暫存器tmod、控制暫存器tcon和資料暫存器th0、tlo, th1、tl1組成。
低優先順序中斷源可被高優先順序中斷源所中斷,而高優先順序中斷源不能被任何中斷源所中斷;一種中斷源(不管是高優先順序還是低優先順序) 一旦得到響應,與它同級的中斷源不能再中斷它。當同時收到幾個同一優先順序的中斷時,響應哪乙個中斷源取決於內部查詢順序。
10樓:
不必這麼複雜……
org 0000h
sjmp main
org 0030h
main: mov dptr, #1000h ;定義單元的首位址mov r1, #2000h ;定義被轉移單元的首位址mov r2,#64h ;100個單元的資料,用16進製表示loop: movx a,@dptr
movx @r1,a
inc dptr
inc r1
djnz r2,loop
sjmp $
11樓:匿名使用者
我用51的組合語言編了,這是個很簡單的問題啊!
org 0000h
sjmp main
org 0100h
main: mov r0, #1000h ;定義單元的首位址mov r1, #2000h ;定義被轉移單元的首位址mov r3,#64h ;100個單元的資料,用16進製表示loop: mov dptr,r0
movx a,@dptr
mov dptr,r1
movx @dptr,a
inc r0
inc r1
djnz r3,loop
sjmp $
用組合語言編寫求數的平均數,用組合語言編寫求三個數的平均數
孟靜渠思雨 data segmentxdw 345y dw234zdw 234m dw897ndw 999 定義五個數rdw 2dup 儲存結果 data ends code segment assume cs code,ds data start movax,data movds,ax movax...
用組合語言編寫延時1S的子程式,用組合語言編寫乙個延時1S的子程式
湯旺河邊 本程式通過編譯,執行正確 code segment assume cs code,ds code subroutine 延時指定的時鐘嘀嗒數 入口 didas 時鐘嘀嗒數 1秒鐘約嘀嗒18.2次,10秒鐘嘀嗒182次。若延時不是秒的10數次倍,誤差稍微大點 delay1s proc nea...
用組合語言,將一串混亂的字母按從小到大的順序排列。(用過程來實現
dseg segment d db ksdacbeozx len equ d dseg ends assume cs cseg,ds dsegcseg segment start mov ax,dseg mov ds,ax call sort mov cx,len mov si,0 mov ah,0...