1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
|
;コードセグメント=================================
CDSEG SEGMENT
ASSUME cs:CDSEG, ds:DTSEG, ss:STSEG
START:
mov ax, DTSEG
mov ds, ax
mov di, 15 ;dxレジスタの初期値を15にする
mov ax, 43690 ;axレジスタに2進数に変換したい値を入れる
mov bx, 2 ;bxレジスタに2を入れる
FOR1:
cmp di, 0
jl END1 ;diが0より小さい場合はEND1へ
mov dx, 0 ;dxレジスタに0を入れる
div bx ;ax=ax/bx 余りdx
;dxレジスタに余りが入っているのでそれを元に処理をする
cmp dx, 0
jz LBL_EQ_ZERO ;余りが0の場合はLBL_EQ_ZEROへ
mov NISIN[di], '1' ;余りが1だったので1にする
LBL_EQ_ZERO:
dec di ;di=di-1
jmp FOR1 ;FOR1へ
END1:
;答えを出力する
mov ah,09H
mov dx,OFFSET NISIN
int 21H
;終了
mov ah, 4CH
int 21H
CDSEG ENDS
;データセグメント=================================
DTSEG SEGMENT
NISIN DB 16 DUP('0'), '$' ;2進数を入れる
DTSEG ENDS
;スタックセグメント===============================
STSEG SEGMENT STACK
DB 100H DUP(?)
STSEG ENDS
END START
|