Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 20:10   #1
Alyonka_v
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 11
По умолчанию Вывод по координатам

Здравствуйте! Я только начала изучать ассемблер, использую компилятор Tasm. Пыталась написать программу, которая запрашивает координаты х и у и выводит * в этих координатах. (Х должно быть [00..79], a Y [00..24]. Подскажите, пожалуйста, что нужно исправить, чтобы программа работала корректно.
Зарание благодарна.
P.S. Вообще в задании написано, что нужно запрашивать строку Xstr и Ystr используя прерывание 21h и функцию 0ah, а потом уже строки преобразовывать в числа, но как это сделать я вообще не поняла, поэтому попробывала запрашивать посимвольно.
Код:
.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

Последний раз редактировалось Alyonka_v; 15.09.2009 в 21:37.
Alyonka_v вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование дуги круга по координатам(С++) Olya90 Помощь студентам 0 07.05.2009 13:52
Вычислить обьем пирамиды по ее координатам в пространстве Dog Помощь студентам 2 19.05.2008 17:05
Принадлежность объекта по координатам Angel_CJ Помощь студентам 9 12.09.2007 18:43
Рассчет времени по координатам Квэнди Свободное общение 5 28.12.2006 12:59
Вставка текста по координатам в Word Nowichok Компоненты Delphi 0 16.12.2006 20:01