Professional Documents
Culture Documents
16
03106715
03112186
03111423
DOSBOX
MASM LINK
1
9-bit
2 2 -
. : ' -
DX ( 8-bit DL 1 DH) -
, 2
. hex bit
. flag -
C16 flag persistent
1 (. 11111111C1
6 ).
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,SS:CODE_SEG,DS:CODE_SEG
ORG 100H
START:
MOV AX,CODE_SEG
MOV DS,AX
MOV BX,0
INFLOOP:
LEA DI,DEC_DIGITS
LEA DX,BITSMSG ;
MOV AH,9
INT 21H
CALL READ_BINARY ;
PUSH BX ; BX flag
MOV BX,DX ; DX BX DX DOS
MOV DL,10 ;
MOV AH,2
INT 21H
LEA DX,DECMSG ;
MOV AH,9
INT 21H
TEST BH,01H ;
JZ PLUS_SIGN
OR BX,0FE00H ; msb 1
NOT BX ; 2
INC BX
MOV DL,45 ; -
MOV AH,2
INT 21H
JMP POSITIVE ; 2
PLUS_SIGN: ; +
MOV DL,43
MOV AH,2
INT 21H
POSITIVE: ;
MOV CX,0A06H ; bits BH
RCL BX,CL
MOV AL,BH
MOV AH,0
DIV CH ; AH AL
ADD AL,48 ; 48 - ASCII
ADD AH,48
CMP AL,48 ; 0 String
JZ ZERO_DEC
MOV BYTE PTR CS:[DI],AL ; ASCII
INC DI
ZERO_DEC:
MOV CS:[DI],AH ; ASCII
INC DI
MOV BYTE PTR CS:[DI],46 ; ASCII
INC DI
MOV AX,03030H ;AL,AH 2 ASCII 0
TEST BL,080H ; 1
JZ NO_50 ; 0 5 1
ADD AH,5 ; 1 2^(-1)=0,5
NO_50:
TEST BL,040H ; 2
JZ NO_25
ADD AH,2 ; 1 2^(-2)=0,25 2
ADD AL,5 ; 5
NO_25:
MOV BYTE PTR CS:[DI],AH ; string
INC DI
MOV BYTE PTR CS:[DI],AL ; string
MOV BYTE PTR CS:[DI+1],10 ;
MOV BYTE PTR CS:[DI+2],36 ; string $
LEA DX,DEC_DIGITS ; DOS string
MOV AH,9
INT 21H
POP BX ; flag string
JMP INFLOOP ;
CODE_SEG ENDS
END START
2
3-
.
array AX
packed ( )
( 1000 100 ...).
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,SS:CODE_SEG,DS:CODE_SEG
ORG 100H
START:
MOV AX,CODE_SEG
MOV DS,AX
INFLOOP: ;
LEA DX,HEXMSG ;
MOV AH,9
INT 21H
CALL READ_HEX ; hex
CALL COMPUTE_NUMBER ; hex CX
LEA DX,DECIMALMSG ;
MOV AH,9
INT 21H
MOV AX,CX
CALL PRINT_DECIMAL ;
MOV DL,10 ;
MOV AH,2
INT 21H
JMP INFLOOP
CODE_SEG ENDS
END START
3
3 16
, ,
,
2
. :
( )
(1 ,1 1 )
.
2
. 1 2
BH, BL
BH,BL .
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,SS:CODE_SEG,DS:CODE_SEG
ORG 100H
START:
MOV AX,CODE_SEG
MOV DS,AX
INFLOOP: ;
CALL CLEAR_ARRAYS ; offsets
CALL READ_KEY ;
LEA DX,KEFALAIA ;
MOV AH,9
INT 21H
MOV AL,45 ;
CALL PRINT_CHARACTER
LEA DX,MIKRA ;
MOV AH,9
INT 21H
MOV AL,45 ;
CALL PRINT_CHARACTER
LEA DX,DIGITS ;
MOV AH,9
INT 21H
MOV DL,10 ;
MOV AH,2
INT 21H
CALL FIND_SMALLEST_DIGITS ; 2
JMP INFLOOP ;
CODE_SEG ENDS
END START