編寫程式統計暫存器AX中二進位制位「1」的個數,結果以1位十六進位制數的形式顯用

2021-04-18 22:25:25 字數 3468 閱讀 2148

1樓:匿名使用者

我假定給ax一個數,

再統計「1」的個數。我除錯了的,答案執行正確回code segment

assume cs:code

start:mov ax,答1234h

xor cx,cx

xor dx,dx

mov cl,16

abc:shl ax,1

jnb exit

inc dl

exit:loop abc

cmp dl,10

jb rrr

add dl,7

rrr:add dl,48

mov ah,02h

int 21h

mov ah,4ch

int 21h

code ends

end start

2樓:

push bx

push dx

push cx

mov bx,

屬axand ax,5555h

mov dx,ax

and ax,0aaaah

shr ax,1

add ax,dx

mov dx,ax

and dx,0cccch

mov cl,2

shr dx,cl

and ax,3333h

add ax,dx

mov dx,ax

and dx,0f0f0h

mov cl,4

shr dx,cl

and ax,0f0fh

add ax,dx

mov dx,ax

and dx,0ff00h

mov cx,8

shr dx,cl

and ax,00ff

add ax,dx

pop cx

pop dx

pop bx

用組合語言編寫一個程式,統計暫存器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

微機原理與接**術 編寫1個程式,統計暫存器ax中二進位制位1的個數,結果以1位十六進位制數形式顯示到螢幕上

6樓:匿名使用者

code segment

assume cs:code

start:

mov ax,0ffffh ;測試用的,你可以修改為任何有效的值

mov cl,16 ;ax是一個字,有16位二進位制

mov dl,0 ;用於累加ax中1的個數

a:rol ax,1 ;迴圈左移1稱,16次迴圈後復原

jnc next ;該位是0,則cf=0,這裡就是測試cf的值,為0則跳轉不累加

inc dl ;cf=1時,dl+1

next:

loop a ;迴圈結構

add dl,30h ;將dl的值轉為ascii碼

cmp dl,'9' ;大於9則是a-f或者10

jbe print ;小於或者等於0則不必再轉化ascii碼

add dl,7 ;如果是a-f則轉化

cmp dl,'f' ;這步關鍵,如果ax的值是0ffffh,則dl=16=10h,沒有這步將會輸出g

ja print_10 ;ax=0ffffh則跳轉進行特殊處理

print:

mov ah,02h

int 21h

print_10:

mov dl,31h ;特殊情況只有一種,即dl=10h,故只要兩次分別輸出字元1和0即可

mov ah,02h

int 21h

mov dl,30h

int 21h

mov ah,4ch

int 21h

code ends

end start

7樓:匿名使用者

assume cs:code, ds:datadata segment

tb db '0123456789abcdef'

data ends

code segment

start:

mov ax, data

mov ds, ax

mov ax, 3ch

mov cx, 16

xor bx, bx

nx:rol ax, 1

test al, 1

jz zero

inc bx

zero:

loop nx

mov ax, bx

lea bx, tb

xlat

mov ah, 2

mov dl, al

int 21h

mov ax, 4c00h

int 21h

code ends

end start

編寫程式 從鍵盤輸入一串字串,統計字串中大寫字母和小寫

include void fun char ch count2 26 while ch i for i 0 i 26 i for i 0 i 26 i void main c語言程式設計 從鍵盤輸入一個字串。分別統計其中大寫字母 小寫字母及其它字元的個數,並輸出。include include ma...

vb程式,編寫程式,將陣列a(10)中的元素向左迴圈移動,即a 1 a 2 ,a 2 a 3)a 10 a

很容易實現!var n as integer m a 1 for i 1 to 9 n a i a i a i 1 a i 1 n next 下面是我在電子 中進行的測試 dim a 10 as integer sub yu for i 1 to 10 a i i cells i,1 a i nex...

可以從8253的暫存器中讀出減計數器的值A 控制暫存器 B 計數初值暫存器 C 減計數單元

答案是d。8253中有三個完全相同的計數器,每個計數器裡有三個暫存器 計數初值暫存器,減1計數器和當前計數值鎖存器。8252開始工作前,先把計數初值裝入計數初值暫存器和減1計數器,開始計數時,減1計數器的值隨著時鐘脈衝的到來進行減1計算,而計數初值暫存器的值保持不變。當前計數值鎖存器,鎖存的是減1計...