用微控制器組合語言求 統計一串資料中正數負數的個數(不包括

2021-09-02 02:40:57 字數 4168 閱讀 1737

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中...