.


:




:

































 

 

 

 


EXE




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





:


: 2015-10-01; !; : 541 |


:

:

,
==> ...

1679 - | 1622 -


© 2015-2024 lektsii.org - -

: 0.015 .