Другие языки программирования и технологии

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

Собственно пользователь должен ввести номер строки и столбца массива, а прога вывести соответствующий элемент на экран. Проблема именно с переводом введенного символа цифры в число. Юзаю тасм. Вроде бы с сабом должно работать, но не работает
MOV AH, 01h
INT 21H
SUB AL,'0'
MOV j, AL
Manon Rozikov
Manon Rozikov
1 102
.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

Лилиан Чеботарь
Лилиан Чеботарь
51 590
Лучший ответ