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
數數少了幾行? 加了二句還少了三行
組合語言微控制器,組合語言怎麼寫入微控制器
rlc 是帶進位的迴圈左移,rlc a即將a的內容左移一位,將進位位c中的值移到累加器a的最低位,a的最高位移到c裡。譬如說 設a 01000001,c 1 則如果執行rl 則a 10000010,c 1 a所有位左移一位,最低位補零,c不參加移位操作,保持原值不變 如果執行rlc後,則a 1000...
微控制器組合語言程式設計,全國微控制器組合語言程式設計師
org 0000h main mov dptr,3000h clr r0 clr r1 clr r2 mov r3,100 loop mov a,dptr clr c cjne a,0h,loop1 inc r0 djnz r3,loop loop1 rl a jc fushu inc r1 djn...
微控制器組合語言的幾個疑問
靈若伊雪 1 r1 20h 不是一條指令,而只是一種說明,表明r1暫存器中的內容是20h。這個20h是地址還是資料,與這個說明無關。2 在指令 mov r1,40h 中,r1 是間接定址方式,表明r1中的內容是地址,指令的功能表明是將立即數40h傳送到r1指定的地址中。3 在指令中容易混淆的是立即數...