Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод по координатам 
:(
    Опции темы
Alyonka_v
Дата 15.9.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 23.12.2006
Где: Latvia, Daugavpil s

Репутация: нет
Всего: нет



Здравствуйте! Я только начала изучать ассемблер, использую компилятор 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.9.2009, 20:39
PM MAIL WWW ICQ   Вверх
Xshot1
Дата 17.9.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Alyonka_v,  не подскажете где вы берёте задания для изучения асма, может есть какой нибудь сборник задач?
PM MAIL   Вверх
airyashov
Дата 18.9.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 2
Всего: 6





--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
dumb
Дата 20.9.2009, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(Alyonka_v @  15.9.2009,  21:18 Найти цитируемый пост)

Код

              mov ah, 02h
              mov dh, [si] ; y в dh
              mov dl, [di] ; x в dl

заменить на:
Код

mov ax, si ; y в dh
mov dh, al
mov ax, di ; x в dl
mov dl, al
mov ah, 02h  

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.