MS DOS ASM-, EXE-:
l 4 , CS, SS, DS ES, : _ segment... _ ends ( MS DOS 4.0 : _).
l , ; CS, SS, ES .
l DS EXE- , (PSP), EXE. DS ASM- - PSP: DS , DS . PSP , 256 (100h). PSP, DS.
l ; , ( , far) ret ( , 20H DOS 4Ch 21H DOS, PSP, COMMAND.COM).
ASM- :
1. .
TITLE prog.ASM
.
2. :
STACKSEG segment stack
DW N dup(?); 32
STACKSEG ends
3. :
DATASEG segment
; ,
;
DATASEG ends
4. :
CODESEG segment
Assume CS:codeseg, DS:dataseg, SS:stackseg
5. far:
MAIN proc far
6. (PSP) :
push DS
sub AX, AX
push AX
7. :
mov AX, dataseg
mov DS, AX
;
|
|
; (dataseg)
; offset dataseg
8. :
9. PSP DS:
ret
10. ; near, , .
11. main, :
MAIN endp
CODESEG ends
end MAIN
, :
title prog.asm
stackseg segment
;
stackseg ends
dataseg segment
;
dataseg ends
codeseg segment
assume CS:codeseg, DS:dataseg, SS:stackseg
main proc far
push DX
sub AX, AX
push AX
mov AX, dataseg
mov DS, AX
;
;...
ret
;
main endp
codeseg ends
end main
.
Q , D%. : N . ASM- EXE-.
TITLE | RASCHET.ASM | ; | |||
STACKSG | SEGMENT | STACK 'STACK' | |||
DW | 64 DUP(?) | ||||
STACKSG | ENDS | ||||
DATASG | SEGMENT | 'DATA'; | |||
VVQ | DB | ' ( 64 000)' | |||
DB | 10,13,'$' | ||||
DB | 10,13,' ' | ||||
DB | 10,13,'$' | ||||
VVN | DB | 10,13,' ' | |||
DB | 10,13,'$' | ||||
Q0 | DW | ? | |||
D | DW | ? | |||
D1 | DW | ? | |||
N | DW | ? | |||
I | DW | ||||
Q | DW | ? | |||
BUF | DB | 5, 0, 0, 0, 0, 0, 0, 0 | |||
VIV1 | DB | ' ' | |||
DB | 10,13,'$' | ||||
SRB | DB | 14 DUP(0), '$' | |||
SR | DB | 6 DUP(0), '$' | |||
SRK | DB | 10, 13, '$' | |||
FT10 | DW | ||||
TEN | DW | ||||
STO | DW | ||||
DATASG | ENDS | ||||
CODESG | SEGMENT | 'CODE' | |||
MAIN | PROC | FAR | |||
ASSUME | CS:CODESG, DS:DATASG, SS:STACKSG | ||||
PUSH | DS | ||||
SUB | AX, AX | ||||
PUSH | AX | ||||
MOV | AX, DATASG | ||||
MOV | DS, AX | ||||
MOV | AH, 9; Q | ||||
MOV | DX, offset VVQ | ||||
INT | 21H | ||||
MOV | AH, 0Ah; Q | ||||
MOV | DX, offset BUF | ||||
INT | 21H | ||||
CALL | STR2BIN | ||||
MOV | Q0, DI | ||||
MOV | AH, 9; D | ||||
MOV | DX, offset VVD | ||||
INT | 21H | ||||
MOV | AH, 0AH; D | ||||
MOV | DX, offset BUF | ||||
INT | 21H | ||||
CALL | STR2BIN | ||||
MOV | D, DI | ||||
MOV | AH, 9; N | ||||
MOV | DX, offset VVN | ||||
INT | 21H | ||||
MOV | AH, 0AH; N | ||||
MOV | DX, offset BUF | ||||
INT | 21H | ||||
CALL | STR2BIN | ||||
MOV | N, DI | ||||
MOV | AX, D | ||||
MOV | D1, AX | ||||
ADD | D1, 100; D1 = (1 + D/100) * 100 | ||||
MOV | AX, Q0; Q = Q0 | ||||
MOV | Q, AX | ||||
MOV | AH, 9 | ||||
MOV | DX, offset VIV1 | ||||
INT | 21H | ||||
RST: | MOV | AX, Q; Q = Q * D1 | |||
MUL | D1 | ||||
DIV | STO | ||||
MOV | Q, AX | ||||
MOV | AX, I | ||||
CALL | BIN2STR | ||||
MOV | AH, 9; | ||||
MOV | DX, offset SR | ||||
INT | 21H | ||||
MOV | AH, 9; | ||||
MOV | DX, offset SRB | ||||
INT | 21H | ||||
MOV | AX, Q; | ||||
CALL | BIN2STR | ||||
MOV | AH, 9 | ||||
MOV | DX, offset SR | ||||
INT | 21H | ||||
MOV | AH, 9; | ||||
MOV | DX, offset SRK | ||||
INT | 21H | ||||
INC | I; I = I + 1 | ||||
MOV | AX, I; I N | ||||
CMP | AX, N | ||||
JLE | RST; I <= N | ||||
RET | |||||
BIN2STR | PROC | NEAR | |||
MOV | SI, offset SR+5; | ||||
PR2: | SUB | DX, DX; ASCII | |||
MOV | [SI], DL; SR | ||||
DEC | SI | ||||
CMP | SI, offset SR | ||||
JA | PR2 | ||||
MOV | CX, 10 | ||||
MOV | SI, offset SR+5 | ||||
PR1: | XOR | DX, DX | |||
DIV | CX | ||||
OR | DL, 30H | ||||
MOV | [SI], DL | ||||
DEC | SI | ||||
CMP | AX,0 | ||||
JNE | PR1 | ||||
RET | |||||
BIN2STR | ENDP | ||||
STR2BIN | PROC | NEAR; ASCII- | |||
MOV | FT10, 1; | ||||
XOR | DI, DI | ||||
MOV | CX, 10 | ||||
LEA | SI, BUF + 1 | ||||
XOR | BH, BH | ||||
MOV | BL, [BUF + 1] | ||||
PR3: | MOV | AL, [SI+BX] | |||
AND | AX, 0FH | ||||
MUL | FT10 | ||||
ADD | DI, AX | ||||
MOV | AX, FT10 | ||||
MUL | TEN | ||||
MOV | FT10, AX | ||||
DEC | BX | ||||
JNZ | PR3 | ||||
RET | |||||
STR2BIN | ENDP | ||||
MAIN | ENDP | ||||
CODESG | ENDS | ||||
END | MAIN | ||||
, Basic:
|
|
10 print
20 input Q, D, N, Q, D, N
30 D1 = 1 + D/100
40 I = 1
50 Q = Q * D1
60 print I, Q
70 I = I + 1
80 if I <= N then goto 50
90 end