, Borland Pascal, - , , , - .
19.4.1.
Borland Pascal (DATA DSEG). DB, DW . .), :
DATA SEGMENT PUBLIC AInt DW? AByte DB?
DATA ENDS
, , . , (private) , Borland Pascal ( Pascal-
). . ,
AInt DW 42h
, AInt .
, Borland Pascal EXTRN.
19.4.2.
, .
AsmProc -- :
CODE SEGMENT
ASSUME cs:CODE AsmProc PROC FAR,'procedure AsmProc(i:integer);
PUBLIC AsmProc
LOCAL a:word, b:word == LocalSpace; [bp-2],
; b - [bp-4] i EQU WORD PTR [BP+6]
push bp
mov bp.sp
sub sp, LocalSpace. SP
mov ax,42
mov a,ax
xor ax,ax
mov b,ax.
mov sp.bp
pop bp
ret 2 AsmProc ENDP CODE ENDS
END
LOCAL a:word, b:word = LocalSpace
^ [BP-2J, b [-4|, LocalSpace - 4 ( ) .
SP. 1< , , :
; sub sp, LocalSpace mov ,42 push ax xor ax,ax push ax
, .
- 8018), is , PUSH . , BP , - , .
|
|
19.5. Borland Pascal
19.5.1.
num (ByteCount*2). (4 ) ADD-DAA-ADC-DAA.
HexStr FAR-, , Borland Pascal FAR, , $F+.
( HEX.ASM):
CODE SEGMENT
ASSUME cs:CODE,ds:NOTHING
; (+2 )
byteCount EQU BYTE PTR ss:[bp+6]
num EQU DWORD PTR ss:[bp+8]
; (+2 )
resultPtr EQU DWORD PTR ss:[bp+12]
HexStr PROC FAR
PUBLIC HexStr
push bp
mov bp,sp;
; ,
; , ,
; ES
les di,resultPtr;
mov dx,ds; DS Borland Pascal DX
; ,
; , ,
; DS
lds si,num;
mov al,byteCount;
xor ah,ah
mov cx,ax
add si,ax;
dec si
; 1
shl ax,1; ? (2/)
; DF
cld;
hexloop:
;
stosb; HexLoop:
; DF , ; ( ;)
std; ;
;
lodsb;
mov ah,al;
; 1
shr al,1;
shr al,1
shr al,1
shr al,1
add al,90h;
; , 99,
; CF
daa
; , CF
adc al,40h
daa; ASCII
; DF
cld
stosb
mov al,ah;
and al,0Fh
add al,90h
daa
adc al,40h
daa
stosb
loop HexLoop
mov ds,dx; DS
pop bp
ret 6; 6
HexStr ENDP
CODE ENDS
END
Borland Pascal, , ax HEX.OBJ, :
program HexTest;
var num: Word;
function HexStr (var num; ByteCount:byte):string; far; external;
{$L HEX}
|
|
begin
num:=12345;
Writeln(' ',num, '=',HexStr(num,SizeOf(num)));
end.
18.1.9. , Pascal
, C++ , . , Borland C++ Pascal, , . Pascal - PASCAL.
Pascal :
'; : TEST (i,|, k);
i equ 8 j equ 6 k equ 4
.MODELL small.CODE PUBLIC TEST TEST PROC push bp mov bp.sp mov ax,[bp+i] add ax,[bp+j] sub ax,[bp+k] pop bp
ret 6 [ TEST ENDP END
. 18.4 MOV BP,SP.
, Pascal .
, Pascal, , C++ ADD SP, n .
. 18.4. Pascal.