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語言的源程式,才用編譯程式。但是,目前,根本沒有必要摳這個字眼。用高階語言編寫的程式必須經過 翻譯成機器語言程式,計算機才能執行。急急急急!編譯程式。編譯程式的最終目標是將源程式編譯成目標程式。編譯程式是把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標...