1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| Pile SEGMENT stack
dw 256 dup(?)
jeton label word
Pile ENDS
Data SEGMENT
ancien_ip dw ?
ancien_cs dw ?
msg_1 db "LE PROCESSEUR SIGNAL UN ETAT D'OVERFLOW$"
msg_2 db "OPERATION EFFECTUE SANS ERREUR D'OVERFLOW$"
x dw 0FFFFh
y dw 0FFFFh
Data ENDS
Code SEGMENT
assume cs:Code, ds:Data, ss:Pile
ReadAdd proc near
mov ah, 35h
mov al, 04h
int 21h
mov ancien_ip, bx
mov ancien_cs, es
ret
ReadAdd ENDP
Routine:
mov ax, Data
mov ds, ax
lea dx, msg_1
mov ah, 09h
int 21h
mov ah, 01h
int 21h
iret
Deroute proc near
mov ax, Data
mov ds, ax
lea dx, Routine
mov al, 04h
mov ah, 25h
int 21h
ret
Deroute ENDP
PrintMsg2 proc near
mov ax, Data
mov ds, ax
lea dx, msg_2
mov ah, 09h
int 21h
ret
PrintMsg2 ENDP
Somme proc near
mov ax, Data
mov ds, ax
mov ax, x
mov bx, y
add ax,bx
ret
Somme ENDP
Restore proc near
mov dx, ancien_ip
mov bx, ancien_cs
mov ds, bx
mov al, 04h
mov ah, 25h
int 21h
ret
Restore ENDP
debut :mov ax,Data
mov ds,ax
mov ax,Pile
mov ss,ax
mov sp,jeton
call ReadAdd
call Deroute
call Somme
int 04h
jo msg
call PrintMsg2
msg:call Restore
mov ax, 4c00h ; exit to operating system.
int 21h
ENDS
END debut |
Partager