.MODEL small
.STACK 200h
.DATA
p1 db 'Pervaja cifra(desjatok) Xstr dolzhna bytj [0..7], cifra ne prinimaetja programmoj, poka ne popadjot v nuzhnyj diapazon', '$'
p2 db 'Pervaja cifra(desjatok) Ystr dolzhna bytj [0..2], cifra ne prinimaetja programmoj, poka ne popadjot v nuzhnyj diapazon', '$'
p3 db 'Vtoraja cifra(edenichnyj razrjad) Ystr dolzhen bytj [0..4], cifra ne prinimaetja programmoj, poka ne popadjot v nuzhnyj diapazon', '$'
pustaja db 0dh, 0ah, '$'
Zvezda db '*', '$'
.CODE
ProgramStart: mov ax, @data
mov ds, ax
xor di, di
xor si, si
mov ah, 9
mov dx, offset p1
int 21h
mov ah, 9
mov dx, offset pustaja
int 21h
xstr1: mov ah, 08h ; запрос первой цифры числа х и преобразование в числовую форму
int 21h
cmp al, '0'
jb xstr1
cmp al, '7'
ja xstr1
mov ah, 02h
mov dl, al
int 21h
sub al, '0'
xor ah, ah
mov bx, 10
mul bx
mov di, ax
jmp xstr2
xstr2: mov ah, 08h ; запрос второй цифры числа х и преобразование в числовую форму
int 21h
cmp al, '0'
jb xstr2
cmp al, '9'
ja xstr2
mov ah, 02h
mov dl, al
int 21h
sub al, '0'
xor ah, ah
mov cx, ax
mov ax, di
add ax, cx
mov di, ax
mov ah, 9
mov dx, offset pustaja
int 21h
mov ah, 9
mov dx, offset p2
int 21h
mov ah, 9
mov dx, offset pustaja
int 21h
mov ah, 9
mov dx, offset p3
int 21h
mov ah, 9
mov dx, offset pustaja
int 21h
jmp ystr1
ystr1: mov ah, 08h ; запрос первой цифры числа у и преобразование в числовую форму
int 21h
cmp al, '0'
jb ystr1
cmp al, '2'
ja ystr1
mov ah, 02h
mov dl, al
int 21h
sub al, '0'
xor ah, ah
mov bx, 10
mul bx
mov si, ax
jmp ystr2
Ystr2: mov ah, 08h ; запрос второй цифры числа у и преобразование в числовую форму
int 21h
cmp al, '0'
jb xstr2
cmp al, '4'
ja xstr2
mov ah, 02h
mov dl, al
int 21h
sub al, '0'
xor ah, ah
mov cx, ax
mov ax, si
add ax, cx
mov si, ax
xor dh, dh
xor dl, dl
jmp clrscr
clrscr: mov ah, 0fh ; очистка экрана
int 10h
mov ah, 00h
int 10h
mov ah, 02h
mov dh, [si] ; y в dh
mov dl, [di] ; x в dl
xor bh, bh
int 10h
mov ah, 09h
mov dx, offset Zvezda
int 21h
xor ah, ah
int 16h
mov ah, 4Ch
int 21h
END ProgramStart
Вывод по координатам
Зарание благодарна.
P.S. Вообще в задании написано, что нужно запрашивать строку Xstr и Ystr используя прерывание 21h и функцию 0ah, а потом уже строки преобразовывать в числа, но как это сделать я вообще не поняла, поэтому попробывала запрашивать посимвольно.
Код:
Например.
Код:
В сегменте данных...
BufSize db 2
StrLen db ?
StrBuf db 2 dup(0)
В сегменте кода
MOV DX, @data
MOV DS, DX
LEA DX, BufSize
MOV AH, 0Ah
INT 21h
BufSize db 2
StrLen db ?
StrBuf db 2 dup(0)
В сегменте кода
MOV DX, @data
MOV DS, DX
LEA DX, BufSize
MOV AH, 0Ah
INT 21h
В результате в StrLen будет число введенных символов (в вашем случае 1 или 2), а в StrBuf собственно сами коды символов цифр введенного числа. Далее вам нужно преобразовать из строкового представления числа в StrBuf в двоичное (можно подпрограммой оформить), ну а дальше уже дело техники...
Большое спасибо за помощь