3.1. NORTON EXE-:
.286
TITLE CALLPR (EXE)
;-------------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;-------------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG,SS:STACKSG
PUSH DS; DS
SUB AX,AX;
PUSH AX;
CALL B10; 10
MOV DS,AX; DS
MOV AX,0250; 0250
ADD AX,0125; 0125
MOV CX,AX; CX
RET; DOS
BEGIN ENDP
;--------------------------------------------------------
B10 PROC
CALL C10; 10
SUB AX,AX
SUB CX,CX
RET;
B10 ENDP
;---------------------------------------------------------
C10 PROC
ADD AX,1
MOV BX,AX
INC BX
RET;
C10 ENDP
;-----------------------------------------------------------
CODESG ENDS
END BEGIN
CALL , CALL, . RET .
- :
DS ES: - 256 (100) , .
CS: ( ).
IP: .
SS: .
SP: , .
3.2. callpr.asm . . .
3.3. DEBUG . R . D SS:00 . , . SP. ,
PUSH. , SP. DS , .
, , , 00 07 07 00. DEBUG , IP, .
3.4. PUSH. , , .
|
|
3.5. CALL B10. , . CALL B10. CALL B10. CALL B10 B10, CALL C10.
3.6. CALL C10. , . .
3.7. , RET 10. , SP, IP, . , , IP. .
3.8. , RET B10. , SP, IP, . , , IP. .
3.9. Q.
4. : .
4.1. , .
NORTON -:
.286
TITLE EXMOVE (EXE)
;-------------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;-------------------------------------------------------
DATASG SEGMENT PARA 'Data'
NAME1 DB 'ABCDEFGHI'
NAME2 DB 'JKLMNOPQR'
NAME3 DB 'STUVWXYZ*'
DATASG ENDS
;--------------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
PUSH DS; DS
SUB AX,AX;
PUSH AX;
MOV AX,DATASG; DATASG
MOV DS,AX; DS
MOV ES,AX
CALL B1OMOVE; /
CALL C1OMOVE; /
RET; DOS
BEGIN ENDP
; ,
; :
;------------------------------------------------------------
B1OMOVE PROC
LEA SI,NAME1;
LEA DI,NAME2;NAME1 NAME2
MOV CX,09; 9
B20: MOV AL,[SI]; NAME1
MOV [DI],AL; NAME2
INC SI;.. NAME1
INC DI;.. NAME2
DEC CX; .
JNZ B20; > 0? -
RET; = 0,
B1OMOVE ENDP
; ,
; LOOP
;----------------------------------------------------------
C1OMOVE PROC
LEA SI,NAME2;
LEA DI,NAME3;NAME2 NAME3
MOV CX,09; 9
C20: MOV AL,[SI]; NAME2
MOV [DI],AL; NAME3
INC SI;.. NAME2
INC DI;.. NAME3
LOOP C20; ,
; 0,
RET; = 0,
C1OMOVE ENDP
CODESG ENDS
END BEGIN
: NAME1, NAME2, NAME3. - NAME1 NAME2 NAME2 NAME3. , MOV .
|
|
BEGIN B1OMOVE C1OMOVE. B1OMOVE NAME1 NAME2. , NAME1 , ..
NAME1 NAME2 9, SI DI . LEA NAME1 NAME2 SI DI.
NAME1 NAME2 SI DI. MOV , , . , MOV AL,[SI] : SI (..NAME1)
L. MOV [DI],AL : AL , DI (..NAME2).
SI DI . , ( 20). SI DI 1, MOV NAME1+1 NAME2+1. , NAME1+8 NAME2+8.
JNZ 20, DEC CX , . DEC CX 1.
1OMOVE B1OMOVE : NAME2 NAME3 LOOP DEC JNZ.
4.2. . .
4.3. DEBUG exmove.exe.
4.4. CALL. , DS . , , , D DS:00, , D SS:00. .
4.5. 20. , , , D DS:00, , D SS:00. .
4.6. INC. , , , D DS:00, , D SS:00. .
4.7. JNZ. , , , D DS:00, , D SS:00. .
4.8. JNZ. , , , D DS:00, , D SS:00. .
4.9. JNZ, . , , , D DS:00, , D SS:00. .
|
|
4.10. , , RET. , , , D DS:00, , D SS:00. .
4.11. RET. , , , D DS:00, , D SS:00. .
4.12. CALL. , , , D DS:00, , D SS:00. .
4.13. LOOP, . , , , D DS:00, , D SS:00. .
4.14. LOOP. , , , D DS:00, , D SS:00. .
4.15. . RET . , , , D DS:00, , D SS:00. .
4.16. , Q.
5. : .
5.1. Z 41 5, z 61 7. , 0 1 :
: 7 6 5 4 3 2 1 0 : 7 6 5 4 3 2 1 0
: 0 1 0 0 0 0 0 1 : 0 1 1 0 0 0 0 1
Z: 0 1 0 1 1 0 1 0 z: 0 1 1 1 1 0 1 0
NORTON COM-:
.286
TITLE CASE (COM)
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H
BEGIN: JMP MAIN
;----------------------------------------------------------
TITLEX DB 'Change to uppercase letters'
;----------------------------------------------------------
MAIN PROC NEAR
LEA BX,TITLEX+1;
MOV CX,31;
B20: MOV AH,[BX]; TITLEX
CMP AH,61H;
JB B30;
CMP AH,7AH;
JA B30;?
AND AH,11011111B; -
MOV [BX],AH; TITLEX
B30: INC BX;
LOOP B20; 31
RET
MAIN ENDP
CODESG ENDS
END BEGIN
TITLEX TITLEX+1. TITLEX+1 TITLEX+1.
CMP 61.
JB 30, < 61.
JA 30, > 7.
61 < AH < 7AH, AND. AND 11011111 ( ). , , . 0, . TITLEX, .
|
|
.
5.2. case.asm. . DEBUG .
5.3. JMP. , D CS:100. TITLEX. .
5.4. 10 - 15 . . . .
5.5. , RET. . .
5.6. Q .