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