1樓:
不想寫程式,給你個提示,用cmp指令,檢視a暫存器中的c位
2樓:墨白
org 0000h
ljmp 0100h
org 0100h
mov r7,#06h
mov r0,#30h
mov r1,#00h;存放小於0的個數
mov r2,#00h;存放等於0的個數
mov r3,#00h;存放大於0的個數
start:mov a,@r0
cjne a,#00h,loop
sjmp sloop1
loop:jc sloop0
jnc sloop2
sloop0:inc r1
sjmp next
sloop1:inc r2
sjmp next
sloop2:inc r3
sjmp next
next:inc r0
djnz r7,start
mov 22h,r3
mov 21h,r1
mov 20h,r2
end你要傳必須有地址,這是我做的
片內ram 30h-35h單元中存放了一組8位有符號數,統計出大於0,小於0和等於0的單元數目,結果分別存入片外20h、21h和22h單元中。
你改一下就可以用了,會改吧,不會再問我
組合語言統計陣列中的正數、負數和零的個數
3樓:百度文庫精選
內容來自使用者:流淚的觀音
data segment
s1 db 13,10,'zheng:$'
s3 db 13,10,'fu:$'
s2 db 13,10,'0:$'
num db -1,3,5,0,-5,-7,4,0,8v1 db 0
v2 db 0
v3 db 0
data ends
stack1 segment para stack
db 20h dup(0)stack1 ends
code segment
assume cs:code,ds:data,ss:stackstart:
mov ax,data
mov ds,ax
mov es,ax
mov di,offset numxor bl,bl
mov cx,9
l1: mov al,[di]or al,al
je addv2
jg addv1
inc v3
jmp bottom
addv2: inc v2
jmp bottom
addv1: inc v1
bottom: inc di
loop l1
mov ah,09h
mov dx,offset
int 21h
mov ah,02h
mov dl,[v3]
add dl,30h
int 21h
mov ah,09h
mov dx,offset
int 21h
mov ah,02h
mov dl,[v2]
add dl,30h
int 21h
mov ah,09h
mov dx,offset
int 21h
mov ah,02h
mov dl,[v1]
add dl,30h
int 21h
mov ax,4c00h
int 21h
code ends
end start
微控制器用組合語言怎樣判斷幾個數的大小?
4樓:匿名使用者
在彙編語句中沒有直接的大小運算功能,要想實現比大小,只能是減法運算然後判斷進位位是否為1,來實現。如果貴多個數,就要多次運算不停地跳轉迴圈!
51微控制器 組合語言 常用資料處理程式設計 求16個無符號數的最大值
5樓:做而論道
查詢最大值的程式,不是很簡單的嗎?
如下即可:
org 0h
mov r0, #30h
acall zi
sjmp $
;-----------------------------------
zi:mov b, #0 ;先用0當做最大值.
mov r7, #16 ;比較16次.
loop: mov a, @r0 ;取來一個數字.
cjne a, b, b1 ;比較.
b1: jc b2 ;有借位轉移.
mov b, a ;夠減則存到b中.
b2: inc r0 ;轉到下一個.
djnz r7, loop ;迴圈16遍.
ret;-----------------------------------end
6樓:亂七胡說八糟亂想
org 0h
mov r0,#30h ;這可能錯了,該項是50h才對吧,這是放數的起始地址
acall zi
sjmp $
zi: mov r7,#15 ;這是要比的數的個數
mov a,@r0 ;取數
loop: mov r1,a ;暫存
inc r0 ;為取下個數準備
mov a,@r0 ;取數
cjne a,01h,big1;r1=01h ;不相等轉
mov b,a ;相等暫存,好象是多餘的
ajmp xun_huan
big1: jc big2 ;從c進位位判cjne不同時誰大
mov b,a ;如果a大於的r1中的數儲存a
ajmp xun_huan
big2: mov a,r1 ;當a小時儲存b
mov b,a ;;當a小時儲存b
xun_huan: djnz r7,loop ;檢查數取完沒
retend
我幫你改一下吧
org 0h
ajmp in 讓開中斷入口區
org 30h
in: mov r0,#50h ;這是放數的起始地址
acall zi
sjmp $
zi: mov r7,#15 ;這是要比的數的個數
mov a,@r0 ;取數
mov b,a ;暫存第一個數到b中
loop: inc r0 ;為取下個數準備
mov a,@r0 ;取數
cjne a,b,big1 ;r1=01h ;不相等轉
big1: jc xun_huan ;從c進位位判cjne不同時誰大
mov b,a ;如果a大於b中的數儲存到b
xun_huan: djnz r7,loop ;檢查數取完沒
retend
數數少了幾行? 加了二句還少了三行
微控制器組合語言填空,微控制器組合語言作業
delay mov r3,20 設定50ms計數迴圈初值 mov tmod,10h 設定時器1方式1mov th1,03ch 置定時器初值mov tl1,0b0h setb tr1 啟動t1lp1 jbc tf1 lp2 查詢計數溢位sjmp lp1 lp2 mov th1,03ch 重新制定時器初...
微控制器彙編程式,微控制器(組合語言)程式
這個是外部擴充套件的ram,fef0h是存資料的地址,mov dptr 0fef0h是給資料指標賦值,movx dptr,a是間接定址,將a中資料送到外部ram的fef0h中,中斷服務程式後面應該有reti,挺容易的,看看書,這例題允許了中斷,給出了中斷處理程式,自己看書學得較為深刻。ofefoh指...
關於微控制器組合語言開頭幾句
0100h的意思是將start 標號後面的指令地址放到100h這個地方,這是說給編譯器聽的.ljmp start 之後的地址到9fh都給別人用.0100意思就是從下面那句話開始,到再次出現 偽 的語句之前的程式全放在從0100h這個地址開始的程式段內。0100h表示主程式的起始地址。前面的類似pc中...