請用組合語言寫出 統計W字中1的個數並將結果顯示輸出

2021-05-05 05:14:31 字數 3163 閱讀 1816

1樓:匿名使用者

除錯通過!

datas segment

w dw 0ffffh

datas ends

codes segment

assume cs:codes,ds:datastongji macro ;巨集 編譯w裡中1的個數mov ax,w

mov cx,16

xor bx,bx

t1:rol ax,1

mov dx,ax

and dx,1

cmp dx,1

jnz t2

inc bx

t2:loop t1

endm

start:

mov ax,datas

mov ds,ax

tongji

call disp

mov ah,4ch

int 21h

disp: ;入口引數bxpush ax ;函式功能以10進位制方式輸出bx裡的值

push bx

push cx

mov ax,bx

mov bx,10

xor cx,cx

d1:xor dx,dx

div bx

push dx

inc cx

cmp ax,0

jnz d1

d2:pop dx

add dx,30h

mov ah,2

int 21h

loop d2

pop cx

pop bx

pop ax

retcodes ends

end start

2樓:匿名使用者

tj    macro w

; 入口引數即w 變數(字),出口引數為 ax暫存器mov ax,w

mov cx,16

mov bx,0

clc@m1:

ror ax,1

jnc @m2

inc bx

@m2:

loop @m1

mov ax,bx

endm

code segment

assume cs:code

w     dw 0ffffh

start:

push cs

pop ds

push cs

pop es

tj w

call disp

mov ah,4ch

int 21h

disp  proc near

; 入口引數為 ax暫存器,出口引數 :無mov bl,10

div bl

push ax

mov dl,al

or dl,30h

cmp dl,'0'

je @d1

mov ah,2

int 21h

@d1:

pop ax

mov dl,ah

or dl,30h

mov ah,2

int 21h

retdisp  endp

code  ends

end start

用組合語言編寫一個程式,統計暫存器ax中二進位制「1」的個數,結果一位十六進位制數的形式顯示

3樓:楊_劉

;程式已實抄

現,主要考慮的是怎樣獲取1的個數

;具體以怎樣的形式顯

示沒有太在意

;個數存在bl中,若想以各種形式顯示,呼叫不同的子函式即可(現在各種進位制轉換的彙編**網上一堆)

code segment

assume cs:code

start:

mov ax,1234

mov bl,0;統計1的個數

mov cx,16;迴圈次數

loop1:

test ax,8000h;不斷的左移,與8000h比較獲取1的個數jnz loop2

inc bl

shl ax,1

loop2:

loop loop1

;輸出1的個數

mov dl,bl

add dl,30h

mov ah,02h

int 21h

mov ah,4ch

int 21h

code ends

end start

4樓:幸運者二號

mov cx,16

;bx中統計ax中1的個數

mov bx,0

;迴圈左移16次

s0:rol ax,1

jnc s1

inc bx

s1:loop s0

5樓:

clcmov bl,0

mov cx,16

lab:

shl ax,1

adc bl,0

loop lab

組合語言,統計bx中1的個數,並在螢幕上以十六進位制形式顯示。 用簡化

6樓:永恆

code  segment

assume cs:code

org 100h

start:

push cs

pop ds

mov bx,x

mov al,0

mov cx,16

@1:shl bx,1  ; 邏輯移位通過進位標誌檢查1的個數jnc @2

inc al

@2:loop @1

mov bl,al   ; 將計數器的值 移入 bl 中mov bh,0

lea si,tab1

mov ah,2

mov dl,[bx+si]  ; 查表得到 數值bx 對應的ascii碼

int 21h

mov ah,4ch

int 21h

x     dw 01234h

tab1  db '0123456789abcdefg'  ;顯示g時表示是16個1

code  ends

end start

如何用組合語言實現微控制器比較轉移

pan clr cy mov 30h,a subb a,10 jb cy,prog1 mov a,30h clr cy subb a,20 jb cy,prog2 mov a,30h clr cy subb a,30 jb cy,prog3 prog1 nop prog2 nop prog3 nop...

at89c51微控制器怎麼用組合語言寫「多個延時程式」

微控制器組合語言中要使一個延時程式可以被不同情況下呼叫而延時不同的時間,可以通過類似於c語言中傳遞引數的方式來實現,舉例如下 org 0000h ljmp main org 0030h main mov p0,5ah p0上的led燈間隔點亮mov r7,50 r7是延時傳遞引數lcall dela...

用組合語言編寫的程式必須經過()翻譯成目標程式後,才能被計算機直接識別和執行

按照規範的說法,應該是彙編程式。c語言的源程式,才用編譯程式。但是,目前,根本沒有必要摳這個字眼。用高階語言編寫的程式必須經過 翻譯成機器語言程式,計算機才能執行。急急急急!編譯程式。編譯程式的最終目標是將源程式編譯成目標程式。編譯程式是把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標...