組合語言(二十九)之數值的二進位制和十進位制

2021-09-07 15:30:41 字數 2094 閱讀 8085

給定乙個數,輸出該數的二進位制和十進位制數

程式執行:

mov ax,datas ;初始化ds

mov ds,ax

push val1

call pairs

retbando endp

pairs proc near

mov bp,sp

add bp,2

mov ax,[bp]

call outbin ;輸出二進位制數

call outoct ;輸出十進位制數

ret 2

pairs endp

codes ends

codes1 segment

assume cs:codes1,ds:datas,ss:stacks

outbin proc far uses ax bx cx

mov bx,2 ;除數

mov cx,0 ;計數器,記錄數的位數

bin:

xor dx,dx

div bx

push dx ;儲存餘數

inc cx

cmp ax,0h ;判斷被除數是否為0

jnz bin ;若不為0,則迴圈繼續

bin1:

pop dx

add dl,30h

mov ah,2 ;輸出各位數字

int 21h

loop bin1

push ds ;輸出8個空格

push cs

pop ds

lea dx,space

mov ah,9

int 21h

pop ds

retspace db ' $'

outbin endp

outoct proc far uses ax bx cx dx

mov bx,8 ;除數

mov cx,0 ;計數器,記錄數的位數

oct:

xor dx,dx

div bx

push dx ;儲存餘數

inc cx

cmp ax,0h ;判斷被除數是否為0

jnz oct ;若不為0,則迴圈繼續

oct1:

pop dx

add dl,30h ;輸出各位數字

mov ah,2

int 21h

loop oct1

;輸出換行

call next_line

retoutoct endp

next_line proc far uses ax dx

mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

next_line endp

codes1 ends

end bando

組合語言 簡單的16位二進位制相加程式

這可以說是第乙個我自己寫的匯程式設計序,雖然很短。功能很簡單,實現兩個16位二進位制數相加即可。下面是實現功能的相應 dseg segment data 1 dw data 2 dw dseg ends sseg segment stack top ptr db 20 dup 0 sseg ends...

80x86組合語言程式設計 二進位制輸入 十進位制輸出

程式設計實現鍵盤輸入16位二進位制數,轉換成等值十進位制數顯示。程式執行後,要求操作員鍵入16位二進位制數,然後程式立即進行轉換,顯示出等值的十進位制數。對於非法鍵入不受理,不回顯,也不顯示錯誤資訊。顯示格式示範如下 000010011101011b 1259d 做而論道編寫的程式如下 data s...

統計二進位制中1的個數(彙編)

data segment str db the result is data ends code segment assume cs code,ds data start mov ax,data mov ds,ax mov dx,offset str mov ah,09h 輸出字串的功能,但是使用前...