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 94 95 96 97 98 99 100 101 102
| ; multi-segment executable file template.
data segment
pkey db "Entrer le nombre des lignes: $"
nbr_lignes dw 0
nbr_colonnes dw 0
tab_colonnes db 2,?, 2 dup(?)
tab_lignes db 2,?, 2 dup(?)
ends
saisir_nbre_ligne PROC
xor si,si
xor ax,ax
xor cx,cx
xor bx,bx
xor dx,dx
lea dx, pkey
mov ah, 9
int 21h
saisir: mov ah,0Ah
int 21h
mov dh,1
mov bx,offset tab_lignes
verif: mov cl, [bx+1]
mov si,cx
mov dl,[bx+si+1]
cmp dl,'0'
jl saisir
cmp dl,'9'
jg saisir
sub dl,'0'
mov al,dh
mul dl
mov nbr_colonnes,ax
dec si
cmp si,0
je fin
fin:mov al,dh
xor cl,cl
mov cl,10
mul cl
mov dh,al
jmp verif
ret
saisir_nbre_ligne endp
;stack segment
; dw 128 dup(0)
;ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
call saisir_nbre_ligne
;lea dx, pkey
;mov ah, 10h
;int 21h
; wait for any key....
;mov ah, 1
;int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler. |
Partager