powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вывод по координатам
3 сообщений из 3, страница 1 из 1
Вывод по координатам
    #36197921
Alyyona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Я только начала изучать ассемблер, использую компилятор Tasm. Пыталась написать программу, которая запрашивает координаты х и у и выводит * в этих координатах. (Х должно быть [00..79], a Y [00..24]. Подскажите, пожалуйста, что нужно исправить, чтобы программа работала корректно.
Зарание благодарна.
P.S. Вообще в задании написано, что нужно запрашивать строку Xstr и Ystr используя прерывание 21h и функцию 0ah, а потом уже строки преобразовывать в числа, но как это сделать я вообще не поняла, поэтому попробывала запрашивать посимвольно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
.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
...
Рейтинг: 0 / 0
Вывод по координатам
    #36198196
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alyyona,

Ну на вскидку из грубых ошибок только
Код: plaintext
1.
2.
              mov dh, [si] ; y в dh
              mov dl, [di] ; x в dl

В si, di не адреса в памяти по которым лежат значения x и y, а сами значения x и y.
Т.е. надо както так

Код: plaintext
1.
2.
3.
              mov dx, si ; y в dh
              mov dh, dl
              or  dx, di ; x в dl
...
Рейтинг: 0 / 0
Вывод по координатам
    #36200390
Alyyona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за помощь
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вывод по координатам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]