組合語言(二十三)之求乙個數的補數

2021-09-07 15:21:12 字數 2246 閱讀 8815

給定乙個數,求該數的補數

程式執行:

mov ax,datas ;初始化ds

mov ds,ax

;輸出原始的num

lea dx,outputnum

mov ah,9

int 21h

mov bl,n

xor bh,bh

dec bx

os:mov al,num[bx]

call hexidemical

dec bx

cmp bx,0

jge os

mov dl,'h'

mov ah,2

int 21h

;求補mov cl,n ;將num的位元組數移至cx

xor ch,ch

cmp cx,0 ;判斷位元組數是否為0

jz no_operate ;若為0,跳轉

lea bx,num ;取num的偏移位址

mov ah,0 ;ah清零

s:xor al,al ;al設定0

sahf ;恢復上一次減法的標誌位

sbb al,[bx] ;帶位減法,求補

lahf ;儲存標誌位

mov [bx],al ;求補的值儲存在原始的位置

inc bx ;移至下乙個單元

loop s

;輸出求補的num

lea dx,outputnumc

mov ah,9

int 21h

mov bl,n

xor bh,bh

dec bx

s1:mov al,num[bx]

call hexidemical

dec bx

cmp bx,0

jge s1

mov dl,'h'

mov ah,2

int 21h

no_operate:

retmain endp

hexidemical proc near

push ax

push cx

push bx

xor ah,ah

mov bl,16

div bl

mov cx,ax

mov dl,cl

cmp dl,10

jb next

add dl,7

next:

add dl,30h

mov ah,2

int 21h

mov dl,ch

cmp dl,10

jb next1

add dl,7

next1:

add dl,30h

int 21h

pop bx

pop cx

pop ax

rethexidemical endp

codes ends

end main

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...

組合語言(二十二)之統計減去奇數的個數

輸入乙個正數,該數減去遞增奇數 從1開始 直至小於等於零為止,計算該數減去奇數的個數 程式執行 mov ax,datas 初始化ds mov ds,ax 輸入a提示 lea dx,inputnum mov ah,9 int 21h 輸入a lea dx,num string mov ah,10 in...

求乙個數中1的個數

碰到遇到乙個有趣的題,求乙個數二進位制的表示中1的個數,該題有兩種解法,一種是使用短除法將該數直接轉化為二進位制數,另一種比較巧妙的演算法是使用與運算,原理如下圖所示 依照此種思入有如下演算法 int numberof1 solution3 int i return count 依照短處法的思路 有...