УГ
Умар Гафаров

Перевод символа числа в число ассемблер.

Собственно пользователь должен ввести номер строки и столбца массива, а прога вывести соответствующий элемент на экран. Проблема именно с переводом введенного символа цифры в число. Юзаю тасм. Вроде бы с сабом должно работать, но не работает
MOV AH, 01h
INT 21H
SUB AL,'0'
MOV j, AL

Ed
Ed

.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

Похожие вопросы
Ассемблер. Определить найменьшее число из чисел, меньших 2Еh
delphi число символов после запятой
Какой символ означает любое число символов в имени файла? ///. -% -* -" -- -+
Как сделать чтобы на ассемблере символы выводились в обратном порядке?
Декомпиляция программы на C приводит к куче символов.. . Что делать? Как перевести хотя бы в ассемблер?: (
задача на ассемблере: ввести предложение и заменить в нем символ "а" на символ "о" и наоборот Напишите код пожалуйста
ассемблер. как сдвинуть 3-х байтовое число на 1 бит?
Ассемблер
Вывести число. Ассемблер. DOS Как вывести число (оно высчитывается) на экран?
Как переводятся эти символы ?