Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 31
1

Не компилируется программа, выдает ошибку при компиляции ASM(126) Need expression

20.12.2012, 00:44. Показов 1627. Ответов 1
Метки нет (Все метки)

Вот собственно задание:
создать программы типа .СОМ или .ЕХЕ с выводом на экран индивидуально своих полных фамилий , имен, отчеств и номера группы обучаемого.
Вывести на экран матрицу символов таблицы ASCII размером 16х16, чередуя выводимые символы пробелами. Размер матрицы, цвет символов,
а также подсветка определяются согласно индивидуального задания получаемого от преподавателя.
Полученная информация вводится в программу с помощью клавиатуры.
Место вывода матрицы на экран определяется с помощью указателя устройства "мышь"

А вот код:
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
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
.model  small   
.stack  256
.data
    lines_message   db  0dh,0ah,"nstrings: ",0dh,0ah,'$'
    columns_message db  "ncolumns: ",0dh,0ah,'$'
    mouse_message   db  "Click Mouse$"
    new_line        db  0Dh,0Ah,'$'
    buffer          db  4,3 dup(?) 
    cdx             db  ?
    cdy             db  ?
    nstrings        db  ?
    ncolumns        db  ?
    color           db  00011111b
.code
start:  
    mov     ax,@data
    mov     ds,ax
    push    cs
    pop     es
    mov     dx,offset columns_message
    mov     ah,9
    int     21h
    mov     ah,01h
    int     21h
    sub     al,30h
    mov     ncolumns,al
    mov     dx,offset lines_message
    mov     ah,9
    int     21h
    mov     ah,01h
    int     21h
    sub     al,30h
    mov     nstrings,al
    call    mouse_click
    jmp     exit
 
exit:   
    mov     ax,4C00h
    int     21h
mouse_click:
    mov     ax,0003h
    int     10h
    mov     dx,offset mouse_message
    mov     ah,9
    int     21h
    mov     ax,0
    int     33h
    mov     ax,1
    int     33h
    mov     ax,000Ch
    mov     cx,0002h
    mov     dx,offset handler
    int     33h
    mov     ah,0h
    int     16h
    mov     ax,000Ch
    mov     cx,0000h
    int     33h
    ret
 
handler: 
    push    0a00h
    pop     es
    mov     ax,@data
    mov     ds,ax
    mov     bl,8
    mov     ax,cx
    div     bl
    mov     cx,ax
    mov     ax,dx
    div     bl
    mov     dl,cl
    mov     dh,al
    push    dx
    mov     cdx,dl
 
 
print:  
    mov     ax,0003h
    int     10h
    mov     ah,2
    pop     dx
    int     10h
    mov     al,30
    mov     ah,9
    mov     bl,color
    mov     cl,nstrings
    mov     si,cx
m3: mov     cl,ncolumns
    mov     di,cx
    mov     cx,1
    
m2: int     10h
    inc     al
    dec     di
    jz      m4
    push    ax
    mov     ah,2
    inc     dl
    int     10h
    mov     ax,0920h
    int     10h
    mov     ah,2
    inc     dl
    int     10h
    pop     ax
    jmp     m2
 
 
m4: dec     si
    jz      end_print
    push    ax
    mov     ah,2
    inc     dh
    mov     dl,cdx
    int     10h
    pop     ax  
    jmp     m3
end_print:  retf
    main_loop_2: 
           mov        ax,4F07h 
           int        10h                  ;   Переместить   начало   экрана. 
           mov        ah, 7                 ;  Считать нажатую клавишу с ожиданием,  без эха 
           int        21h                   ;  и без проверки на Ctrl-Break. 
           test       al,al                 ;  Если это обычная   клавиша - 
           jnz        exit_loop_2             завершить программу . 
           int        21h                   ;  Иначе:   получить   расширенный   ASCII-код. 
           cmp        al,50h                ;  Если   это  стрелка   вниз 
           je         key_down 
           cmp        al,48h                 ; или   вверх  -   вызвать обработчик. 
           je         key_up 
exit_loop_2:                                 ; Иначе - завершить программу. 
           mov        ax,3                   ; Текстовый   режим. 
           int        10h 
           ret                               ; Завершить   СОМ-программу. 
 
key_down :                                  ;  Обработчик   нажатия     стрелки    вниз. 
           dec        dx                    ;  Уменьшить номер строки.начала экрана. 
           jns        main_loop_2           ;  Если знак не изменился  -   продолжить цикл. 
                                            ;  Иначе  (если номер был 0,  а стал -1)  - 
                                             ; увеличить номер строки. 
key_up:                                     ;  Обработчик     нажатия   стрелки    вверх. 
           inc        dx                    ;  Увеличить номер строки начала экрана. 
           jmp        short main_loop_2 
    end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2012, 00:44
Ответы с готовыми решениями:

программа выдает ошибку при компиляции
подскажите, пожалуста, в чем ошибка..При компиляции выскакивает ошибка undefined reference to...

Программа выдает ошибку при компиляции на dev c++
#include <iostream> #include <ctime> using namespace std; int main() { ...

При компиляции программа выдает ошибку exception_Access_violation
#include <stdio.h> main(){ int n, i, p; int a; int b; FILE *in; FILE *out; in =...

При компиляции выдает ошибку!Программа должна писать число словами.
Начала делать курсовой(еще не закончен, программа готава на четверть), все шло нормально, а потом...

__________________
1
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
20.12.2012, 00:55 2
Точку с запятой забыли поставить
Assembler
1
2
3
           test       al,al                 ;  Если это обычная   клавиша - 
           jnz        exit_loop_2             завершить программу . 
           int        21h                   ;  Иначе:   получить   расширенный   ASCII-код.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2012, 00:55

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Программа не компилируется, выдает ошибку
Выдает ошибку с sort, не знаю как ее исправить. using System; using...

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

Как обработать ошибку при компиляции asm в батнике?
Добрый вечер, необходимо автоматизировать процесс ассемблирования и компоновки, через bat. Tasm...

Компилируется, но выдает ошибку при запуске
Приветствую всех! Нашел где-то в сети исходник простой программы для вывода глифов TTF-шрифта в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.