.model small
.stack 128
.data
N_Rows equ 10; Кол-во строк массива
Array db 245,152,205,168,117,27,24,49,23,245
db 77,88,156,29,117,25,5,5,37,63
db 55,221,52,210,153,20,192,118,193,56
db 158,198,129,46,220,95,255,84,195,55
db 236,27,212,217,11,149,42,153,90,168
db 74,53,217,54,138,177,46,208,237,149
db 104,173,68,1,228,145,24,52,233,237
db 36,67,70,167,143,191,239,226,142,169
db 142,12,194,254,7,118,217,43,107,220
db 222,42,111,227,197,254,49,96,89,68
i db ?
j db ?
Prompt_i db 'Введите номер строки (0..9): $'
Prompt_j db 'Введите номер столбца (0..9): $'
tResult db 'Элемент с заданными индексами: $'
tError db 13,10,'Ошибка! $'
crlf db 13,10,36
.code
N81095439:
mov cx,@data
mov ds,cx
Input_i:
lea dx,Prompt_i
call Input
mov i,al
lea dx,Prompt_j
call Input
mov j,al
mov ah,9
lea dx,tResult
int 21h
;Вычисление адреса заданного элемента
mov al,i
mov ah,N_Rows
mul ah
mov bx,ax
mov cl,j
xor ch,ch
mov si,cx
mov al,Array[bx][si]; Получение заданного элемента массива
xor cx,cx
mov bl,10
PrePrint:
xor ah,ah
div bl
push ax
inc cx
test al,al
jnz PrePrint
Print:
pop ax
add ah,'0'
mov al,ah
int 29h
loop Print
mov ah,8
int 21h
mov ah,4Ch
int 21h
Input proc
mov bp,dx
RepInput:
mov dx,bp
mov ah,9
int 21h
mov ah,1
int 21h
sub al,'0'; с "сабом" как раз и работает
jb Error_Inp
cmp al,9
ja Error_Inp
mov bp,ax
lea dx,crlf
mov ah,9
int 21h
mov ax,bp
ret
Error_Inp:
lea dx,tError
mov ah,9
int 21h
jmp RepInput
Input endp
end N81095439