Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
sudo rm -rf /*
0 / 0 / 1
Регистрация: 12.12.2016
Сообщений: 17
1

_RUNDUDE.ASM

15.07.2017, 23:02. Показов 786. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Нужна помощь с программой! Она запускается и сразу же вылетает. Естественно, я как ламер где-то наделал ошибок, НО ГДЕ?! Вот код программы:
P.S.: И да, это тестовая версия программы, "чувак" пока может бегать только вверх и вниз

Assembler
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
TITLE       RUNDUDE_by_DedSec
;------------------------------------------------------
.model      small
.stack      100h
.386
 
V_MOD = 0Dh
;------------------------------------------------------
.data
saveMode    db     ?
currX       dw     100
currY       dw     100
color       db     1
;------------------------------------------------------
.code
            mov    ax, @data
            mov    ds, ax
MAIN        proc   near
            mov    ah, 0
            mov    al, V_MOD
            int    10h
            call   VID_REST
            mov    ah, 0Ch
            mov    al, color
            mov    bh, 0
            mov    cx, currX
            mov    dx, currY
            int    10h
            call   KEY_LIST         
MAIN        endp            
VID_REST    proc   near
            mov    saveMode, al
            ret
VID_REST    endp
KEY_LIST    proc   near
            mov    ah, 10h
            int    16h
            cmp    ah, 50h
            je     K10
            cmp    ah, 48h
            je     K20
            cmp    al, 1Bh
            je     EXT
K10:
            dec    currY
            call   MAIN
K20:
            inc    currY
            call   MAIN
EXT:
            mov    ax, 4c00h
            int    21h
KEY_LIST    endp
end         MAIN
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2017, 23:02
Ответы с готовыми решениями:

Delphi и ASM - не работает вызов функции Invoke через asm
В Delphi не работает вызов функции Invoke через asm. часть кода: asm invoke...

При сборке выдает ошибку "MASM: fatal error A1000: : 1.asm.asm"
"MASM : fatal error A1000: : 1.asm.asm :\1>link16 /TINY 1.asm.obj, 1.asm.com" Вопользовался...

C++ to asm
int Sum(int x, int n, int nmin, int nmax) { int i; int s = 1; for (i = 0; i < n; i++) ...

ASM в С++
Здравствуйте! Нужна помощь!!! Всем откликнувшимся заранее спасибо! Как работать с ассемблером в...

6
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
15.07.2017, 23:28 2
Вы на каком-нибудь языке программирования уже программировали?
Вопрос потому - что в программе перемешан код основной процедуры и подпрограмм. Эта необычная структура никогда не будет работать.
0
sudo rm -rf /*
0 / 0 / 1
Регистрация: 12.12.2016
Сообщений: 17
15.07.2017, 23:31  [ТС] 3
Учу TASM. Сначала писал программы под DOS, а теперь решил попробовать написать под Win. Судя по всему не получилось
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
15.07.2017, 23:33 4
Но перед этим учили BASIC/Pascal/C ?

Структура программы не вызывала трудностей? В данном случае речь о взаимном расположении в исходнике основной программы и подпрограмм.
0
sudo rm -rf /*
0 / 0 / 1
Регистрация: 12.12.2016
Сообщений: 17
15.07.2017, 23:41  [ТС] 5
Да, перед этим учил Basic (писал игры под ZX Spectrum), потом QBasic. Сама структура программы трудностей не вызвала. Это модификация (жаль, что нерабочая) моей предыдущей программы. Она была "с этим же умыслом", но попроще. Вместо пикселя в консоли рисовался символ, вызывалась процедура "обработчика клавиш", в зависимости от нажатой клавиши менялись значения строки или столбца, "затирался экран" от cx, 0000 до ~184Fh, и снова рисовался символ, НО уже с новыми координатами.
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
15.07.2017, 23:58 6
Ну какая разница в названии языка.
Вы смешиваете код основной программы и процедур.
К примеру, возьму код из Задача про преломление лучей на qbasic
PureBasic
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
DECLARE FUNCTION ARCSIN! (x!)
 
CLS
CONST pi = 3.141593
CONST k = pi / 180
 
INPUT "A = "; a
INPUT "N = "; n
 
sinG = SIN(k * a) / n
g = ARCSIN(sinG)
 
SCREEN 11
WINDOW (-40, 30)-(40, -30)
 
yA = 30
xA = -30 * TAN(k * a)
yB = -30
xB = 30 * TAN(g)
 
LINE (-40, 0)-(40, 0)
LINE (0, 0)-(xA, yA)
LINE (0, 0)-(xB, yB)
END
 
FUNCTION ARCSIN (x)
   IF ABS(x) = 1 THEN
      ARCSIN = SGN(x) * pi / 2
   ELSE
      ARCSIN = ATN(x / SQR(1 - x ^ 2))
   END IF
END FUNCTION
Вы его умудряетесь записать
PureBasic
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
DECLARE FUNCTION ARCSIN! (x!)
 
CLS
CONST pi = 3.141593
CONST k = pi / 180
 
INPUT "A = "; a
INPUT "N = "; n
 
sinG = SIN(k * a) / n
g = ARCSIN(sinG)
 
SCREEN 11
WINDOW (-40, 30)-(40, -30)
 
yA = 30
xA = -30 * TAN(k * a)
yB = -30
xB = 30 * TAN(g)
FUNCTION ARCSIN (x)
   IF ABS(x) = 1 THEN
      ARCSIN = SGN(x) * pi / 2
   ELSE
      ARCSIN = ATN(x / SQR(1 - x ^ 2))
   END IF
END FUNCTION 
LINE (-40, 0)-(40, 0)
LINE (0, 0)-(xA, yA)
LINE (0, 0)-(xB, yB)
END
Но ассемблер - это такой же язык программирования, с теми же принципами, что и BASIC.

Добавлено через 3 минуты
О структуре asm программ для DOS - https://www.cyberforum.ru/asm-... ost9602973

Надеюсь, понятно пояснил.
1
sudo rm -rf /*
0 / 0 / 1
Регистрация: 12.12.2016
Сообщений: 17
16.07.2017, 00:00  [ТС] 7
Вот блин. Теперь понятно) Спасибо
0
16.07.2017, 00:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2017, 00:00
Помогаю со студенческими работами здесь

C + ASM
Доброго времени суток, буду краток, необходима помощь по лабораторной работе. Необходимо выполнить...

Си -> asm
имеется такая функция на си void swap(unsigned char* a, unsigned char* b) { unsigned char...

HELLO.ASM
Готовый код программы Data SEGMENT Greet DB 'Привет, Маша!',13,10,'$' Data ...

Из COM в ASM
Доброго времени суток. Есть в книге Абеля COM-код. Помогите его перевести, пожалуйста, для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru