View Single Post
Old 07-25-2011, 06:02 AM   #2
t9yun0ig4fg
Major General
 
Join Date: Feb 2011
Posts: 983
t9yun0ig4fg is on a distinguished road
Default

| Back to logs list

2126222 2009 年 04 月 21 日 13:19 Reading (loading. ..) Comments (1) Category: Personal Diary
( string reverse output)
stack segment stack 'stack'
; dw 32 dup (?)
stack ends
data segment
OBUF1 DB 'Please input SSTRING : $ '
OBUF2 DB' Please input DSTRING: $ '
SSTRING DB 64,0,64 dup (?)
data ends
DATAE ; SEGMENT
DSTRING DB 64 DUP (?)
DATAE ENDS
code segment
begin proc far
; assume ss: stack, cs: code, ds: data
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
MOV DX, OFFSET OBUF1
; MOV AH, 9
INT 21H
; MOV DX, OFFSET SSTRING
MOV AH, 10
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
MOV DX, OFFSET OBUF2
MOV AH, 9
; INT 21H
MOV CL, SSTRING +1
; MOV CH, 0
MOV ; SI, CX
ADD SI, OFFSET SSTRING +1
MOV DI, OFFSET DSTRING
AG: MOV AL, [SI]
; MOV [DI], AL
DEC SI
INC DI
; LOOP AG
MOV BYTE PTR [DI ],'$'
MOV DX, OFFSET DSTRING
MOV AH, 9
INT 21H
; ret
begin endp
code ends
; end begin

(add the output of two hexadecimal hexadecimal output)
; a hex number into bits adder
stack segment stack 'stack'
dw 32 dup (?)
stack ends
data segment
BCD1 ; DB 'Please input number A: $'
BCD2 DB 'Please input number B: $'
BCD3 ; DB 'The sum of A and B is: $'
N1 DB 2,0,2 DUP (0)
N2 DB 2,0,2 DUP (0)
OBUF DB 4 DUP (?)
data ends
code segment
begin ; proc far
assume ss: stack, cs: code, ds: data
; push ds
sub ax, ax
push ax
mov ax , data
mov ds, ax
; MOV DX, OFFSET BCD1
MOV AH, 9
INT 21H
MOV DX, OFFSET N1
MOV AH, 10
; INT 21H
MOV DL, 0AH
; MOV AH, 2
INT 21H
MOV DX, OFFSET BCD2
MOV AH, 9
INT 21H
MOV DX, OFFSET N2
MOV AH, 10
INT 21H
MOV ; DL, 0AH
MOV AH, 2
; INT 21H
MOV DX, OFFSET BCD3
MOV AH, 9
INT 21H
MOV AX, 0
MOV AL, N1 +2
CMP AL, 3AH
JB HB
ADD AL, 9
HB: AND AL, 0FH
MOV CL, N2 +2
CMP CL, 3AH
JB HP
ADD CL, 9
HP: AND CL, 0FH
ADD AL, CL
MOV BL, AL
AND AL, 0FH
MOV CL,belstaff jacket, 4
SHR BL, CL
ADD AL, 30H
CMP AL, 3AH
JB HH
AG1: ADD AL, 7
HH: ADD BL, 30H
MOV OBUF, BL
MOV OBUF +1, AL
MOV WORD PTR OBUF +2, '$ H'
MOV DX, OFFSET OBUF
MOV AH, 9
INT 21H
RET
begin endp
code ends
end begin
(decimal input, two hex output)
stack ; segment stack 'stack'
dw 32 dup (?)
stack ; ends
data segment
OBUF1 DB 'Please input N (0 ~ 65535 ): ', 0AH, 0DH ,belstaff outlet,'$'
IBUF DB 6,0,6 DUP (?)
N1 ; DB 6 DUP (?)
N2 DB 6 DUP (?)
N3 ; DB 17 DUP (?)
SB DW?
data ends
code segment
begin proc far
assume ss: stack, cs: code, ds: data
push ds
; sub ax, ax
push ax
; mov ax, data
mov ds , ax
MOV DX, OFFSET OBUF1
MOV AH, 9
INT 21H
MOV AH, 2
MOV DL, 0AH
INT 21H
MOV DX, OFFSET IBUF
MOV AH, 10
; INT 21H
MOV CL, IBUF +1
MOV CH, 0
; MOV DI, OFFSET N1
MOV SI, OFFSET IBUF +2
; MOV AX, 0
AG1: MOV AL, [SI]
MOV [DI], AL
; INC SI
INC DI
; LOOP AG1
MOV BYTE PTR [DI ],'$'
MOV DX, OFFSET N1
; MOV AH, 9
INT 21H
; MOV DL, 3DH
MOV AH, 2
INT 21H
MOV ; CL, IBUF +1
MOV CH, 0
; MOV SI, OFFSET IBUF +2
MOV AX, 0
AG2: MOV DX, 10
MUL DX
AND BYTE PTR [SI], 0FH
ADD AL, [SI]
ADC AH, 0
INC SI
LOOP AG2
MOV SB, AX
; MOV CX, 0404h
MOV SI, 4
; MOV WORD PTR N2 [SI], '$ H'
AG3: MOV DL,belstaff leather, 0FH
; AND DL, AL
ADD DL , 30H
CMP DL, 3AH
; JC NOAD7
ADD DL, 7
NOAD7: DEC SI
MOV N2 [SI], DL
SHR AX, CL
DEC CH
JNZ AG3
MOV DX, OFFSET N2
MOV AH, 9
; INT 21H
MOV DL,belstaff uk, 3DH
; MOV AH,belstaff sale, 2
INT 21H
; MOV CL, IBUF +1
; MOV CH, 0
MOV SI, OFFSET IBUF +2
MOV AX, SB
MOV CX, 16
MOV BX, 0
and ax, ax
AG4: MOV DX, 0
SHL AX, 1
RCL DX, 1
ADD DL, 30H
MOV N3 [ ,],[; LOOP AG4
MOV word ptr N3 [BX], '$ B'
MOV DX, OFFSET N3
MOV ; AH, 9
INT 21H
; ret
begin endp
code ends
; end begin

(square output)
stack segment stack 'stack'
dw 32 dup (?)
stack ends
data segment
INPUT DB 'Please input a number: $ '
LFB DB '0 $ 1 $ 4 $ 9 $ 16 $ 25 $ 36 $ 49 $ 64 $ 81 $'
N db?
data ends
code segment
begin proc far
assume ss: stack, cs: code, ds: data
push ds
push ax
; mov ax, data
mov ds, ax
; MOV DX, OFFSET INPUT
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
MOV N, AL
MOV AH, 2
MOV DL, 0AH
INT 21H
MOV DL, N
AND DL, 0FH
mov AL, DL
MOV CL, 1
SHL DL, CL
ADD DL, AL
MOV DH, 0
ADD DX, OFFSET LFB
MOV AH, 9
INT ; 21H
ret
begin endp
code ends
end begin

(hex input, two decimal output)
stack segment stack 'stack'
dw 32 dup (?)
stack ends
data segment

IBUF1 DB 'INPUT YOUR NUMBER:', 0DH, 0AH ,'$'
ibuf2 db 5 dup (?)
IBUF3 ; DB 5,0,5 DUP (?)
OBUF1 DB 6 DUP (?)
NB DW?
data ends
code segment
begin proc far
assume ss: stack, ds: data, cs: code
push ds
mov ax, 0
push ax
; mov ax, data
mov ds, ax
MOV DX, OFFSET IBUF1
MOV AH, 9
INT 21H
; MOV DX, OFFSET IBUF3
MOV AH, 10
INT 21H
MOV BL, IBUF3 +1
MOV BH, 0
mov word ptr IBUF3 [BX +2 ],'$='
MOV DX, OFFSET IBUF3 +2
MOV AH, 9
INT 21H
mov cl, 4
XOR AX, AX; ax cleared, cf = 0
MOV SI, OFFSET IBUF3 +2
HP: shl ax, cl
cmp byte ptr [si], 3ah
jB hh
add byte ptr [si], 9
hh: AND byte ptr [SI], 0FH
; ADD AL, [SI]
INC SI
dec bx
jnz HP
MOV BX, AX
; MOV SI, 5
MOV WORD PTR OBUF1 [SI], '= D'
MOV OBUF1 [SI +2 ],'$'
MOV CX, 10
AG: MOV DX, 0
; div cx
add dl, 30h
dec SI
MOV OBUF1 [SI], dl
or ax, ax
; jnz AG
MOV DX, OFFSET OBUF1
MOV AH, 9
; INT 21H
MOV AH, 2
MOV CX, 16
AD: MOV DL, 18H
SHL BX, 1
RCL DL, 1
INT 21H
LOOP AD
; MOV DL, 'B'
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
RET
begin ENDP
code ends
end begin

(the sum of two decimal,belstaff coat, decimal output)
stack segment stack 'stack'
dw 32 ; dup (?)
stack ends
data segment
BCD1 DB 'Please input number A: $'
BCD2 DB 'Please input number B: $'
BCD3 DB 'The sum of A and B is: $'
N1 DB 9,0,9 DUP (?)
N2 DB 9,0,9 DUP (?)
OBUF DB 10 DUP (?)
data ends
code segment
begin proc far
; assume ss: stack, cs: code, ds: data
push ds
sub ax, ax
; push ax
mov ax, data
mov ds, ax
MOV DX, OFFSET BCD1
; MOV AH, 9
INT ; 21H
MOV DX, OFFSET N1
MOV AH, 10
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
MOV DX, OFFSET BCD2
MOV AH, 9
; INT 21H
MOV DX, OFFSET N2
MOV AH, 10
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
MOV DX, OFFSET BCD3
; MOV AH, 9
INT 21H
; MOV DL, 0AH
MOV AH, 2
; INT 21H
MOV ; BL, N2 +1
MOV BH, 0
; ADD BX, OFFSET N2 +1
MOV CL, N1 + 1
MOV CH, 0
mov SI, CX
ADD SI, OFFSET N1 +1
; CMP CL, N2 +1
JC ; NXCHG
XCHG CL, N2 +1
XCHG BX, SI
NXCHG: MOV DI, WORD PTR N2 +1
; AND DI, 00FFH
ADD DI, OFFSET OBUF
MOV BYTE PTR [DI +1 ],'$'
SUB N2 +1, CL
MOV AL, 0
AGAIN: MOV AH, 0
ADD AL,
; ADD AL, [SI]
AAA
ADD AL, 30H
; MOV [DI], AL
MOV AL, AH
; DEC BX
DEC SI
DEC DI
LOOP AGAIN
MOV CL, N2 +1
AND CL, CL
JZ DONE
AGAIN1: MOV AH, 0
ADD AL,
; AAA
ADD AL, 30H
; MOV [DI], AL
MOV AL , AH
DEC BX
; DEC DI
LOOP AGAIN1
DONE: AND AL, AL
JNZ DONE1
t9yun0ig4fg is offline   Reply With Quote

Sponsored Links