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

時間 2021-09-02 02:40:47

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 在指令中容易混淆的是立即數...