Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Exclusive634
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 4
#1

Ошибка в TASM из-за Дальней подпрограммы(отдельный сегмент) - Assembler

13.12.2016, 19:49. Просмотров 457. Ответов 1
Метки нет (Все метки)

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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
  stck    segment stack
dw  10h dup(0)   ;16 слов, инициализированных   нулем
         stck    ends
         data    segment
             atmp db 0h
             btmp db 0h
             сtmp dw 0h
             bol dw 0h
             x dw (?)
             massiv dw 4 dup (?)
             massiv2  dw 4 dup (?)
             i db 11b
             data    ends
             PrcCode    segment
         podproc proc far
             push bp             ;—Сохранение регистра BP
         mov bp,sp
             mov bx,[bp+4]
             cmp bl,al
             JNe mNE;
                 mov bx, offset massiv2
             mov [bx+di],si
             inc di
                 mNE:
             inc si
             pop bp
         ret 2
         podproc endp
            PrcCode ends        ;конец сегмента подпрограммы
             code    segment
             assume cs:code, ds:data,ss:stck
main:
             mov dx, data
             mov ds, dx
 
             call input
             ;-------------------------------основна¤ программа-------------------------
             GO:
             call mainproc
 
         call outtoscreen2
 
         pause: in al, 60h
             cmp al, 01h
             jne pause
         quit:   mov ax, 4C00h
             int  21h
             ;--------------------------------------------------------------------------
         beep proc
 
     mov atmp,al
         mov btmp,bl
         mov сtmp,cx
         mov bx,bol
             cmp bol,1h
             je next
         mov bol,0h
             jmp endbeep
         next:
             mov al, 24h
             out 42h, al
         mov al, 0Eh
             out  42h, al
             in al, 61h
             or al, 00000011b
             out 61h, al
         xor cx, cx
     l1:     mov bx, cx
             mov cx, 4h
         l2:     loop l2
         mov cx, bx
         loop l1
         in al, 61h
             and al, 11111100b
             out 61h, al
             mov al,atmp
         mov bl,btmp
         mov cx,сtmp
     mov bol,0h
         jmp inloop
             endbeep:
             ret
             beep endp
             ;--------------------------------------------------------------------------
             outtoscreen proc
             mov bx, 8000h
mov di, 80*2
         mov si,0h
             beg:
         mov bx, 8000h
         cmp si,4h
             je bye
             outloop:
                 push bx
         xor bx,bx
             xor ax,ax
             mov bx, offset massiv
             mov ax, [bx+si]
             pop bx
             test ax, bx
         jnz bit1
             mov es:[di], 0730h ;если 0, вывести 0
         jmp NxtBit
         bit1:   mov es:[di], 0731h ;если 1, вывести 1
             NxtBit: inc di
             inc di
             shr bx, 1
             jnc outloop
                 inc si
             mov es:[di], 0720h
             inc di
             inc di
             jmp beg
             bye:
             ret
             outtoscreen endp
         ;--------------------------------------------------------------------
             outtoscreen2 proc
             mov bx, 8000h
                 mov di, 80*4
                 mov si,0h
             beg2:
             cmp si,4h
             je bye2
             outloop2:
             mov es:[di], 0720h
             push bx
             xor bx,bx
             xor ax,ax
                 mov bx, offset massiv2
             mov al, [bx+si]
             pop bx
     shr al,4
 
         add al,'0'
             mov es:[di], al
                 inc di
             push bx
             xor bx,bx
             xor ax,ax
             mov bx, offset massiv2
             mov al, [bx+si]
             pop bx
             and al,0Fh
             add al,'0'
             inc di
             mov es:[di], al
 
             inc di
             inc di
             inc si
             mov es:[di], 0720h
             inc di
             inc di
 
             jmp beg2
             bye2:
             ret
                 outtoscreen2 endp
             ;----------------------------------input-------------------------------
                 input proc
                 mov dx, 0B800h
             mov es, dx
    xor di, di
                 xor dx, dx
             mov ax, 0720h
                 mov cx, 80*25
                     rep stosw
                 xor di, di
                     push si
                     mov si,0
                     opanki:
                 mov cx, 2h
                 inloop:
                 call beep
                 in  al, 60h
                 cmp al, bl
             je  inloop
         mov bl, al
         cmp al, 01h
             jne NotEsc
                 jmp quit
         NotEsc: cmp al, 02h
                 je  num1
             cmp al, 39h
             je  space
         cmp al, 0Bh
             jne notlegal
         shl dx, 1
             mov es:[di], 0730h
             mov bol,1h
                     jmp NxtNum
                     notlegal:
             mov bol,0h
             jmp inloop
                 space:
                 mov es:[di], 0720h
                 mov bol,1h
                 inc di
                     inc di
         jmp inloop
         num1: shl dx, 1
         or  dx, 1
             mov es:[di], 0731h
         mov bol,1h
             jmp NxtNum
                 NxtNum:
                 inc di
                 inc di
                     dec cx
                     jnz inloop
             mov dh,0h
         mov x, dx
         mov atmp,al
             mov btmp,bl
             mov bx, offset massiv
                     mov [bx+si],dl
                 mov dx,0b
                 mov bl,btmp
                     mov al,atmp
                     inc si
                 cmp si,4h
                 jl menche
                     ;call outtoscreen
                 jmp GO
             menche: jmp opanki
                     exitforinput:
             ret
             input endp
                     ;---------------------------------------mainproc------------------------------
                 mainproc proc
  
                 obrab:
                 mov al,i
                     mov di,0h ;счЄтчик второго массива
                 mov cx,4h
             mov si,0h;счЄтчик первого массива
             LP:
                 mov bx, offset massiv
             mov dl,[bx+si]
             push dx
         call far ptr podproc
    
         loop LP
 
             mov cx,4h
         mov dl,99h
                 LP2:
                 mov bx, offset massiv2
             mov [bx+di],dl
                 inc di
         loop LP2
 
             ret
             mainproc endp
             ;----------------------------------------------------------------------
            
             code    ends
                 end main
Вроде все правильно, но выдается ошибка в 20 строке:
"Near jump or call to different CS"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2016, 19:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в TASM из-за Дальней подпрограммы(отдельный сегмент) (Assembler):

Как сделать доступным сегмент кода для записи (tasm)?
32 битная система. собственно вопрос(какие параметры отсылать линковщику)?

Ошибка "partner index segment №1 has incompatible data type" сегмент индекса партнера №1 имеет несовместимый тип данных
/******************************************************************************/...

Tasm ошибка
.MODEL SMALL .STACK 100h .DATA A db -127 B db -127 X dw 0 Hello db...

Определить расстояние между самой дальней и самой близкой точкой по отношению к началу координат.
С помощью действительной матрицы 2 на n на плоскости задано n точек, так, что...

Ошибка в расчетах (TASM)
Здравствуйте! В институте дали задание написать программу арифметической...

Ошибка при компиляции TASM
Помогите исправить ошибку .386 .model small .data x dq 0.5 ...

1
ФедосеевПавел
Модератор
3414 / 1911 / 815
Регистрация: 01.02.2015
Сообщений: 6,451
14.12.2016, 00:00 #2
После определения сегмента PrcCode добавьте директиву assume, чтобы компилятор понимал, от чего вести отсчёт в этом сегменте.
Assembler
1
assume cs:PrcCode
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2016, 00:00
Привет! Вот еще темы с решениями:

Ошибка выноса структуры в отдельный файл
Доброго времени суток. Имеется такая проблема: у меня часто используется...

Ошибка в TASM, Operand types do not match
Появилась вот такая вот ошибка - Operand types do not match. Не знаю как...

Ошибка пуска tasm в 64-разрядной Windows
Дела обстоит так у меня ошибка с тасм у меня 64 система а он мне говорит что не...

Ошибка. Неопределённый символ в модуле. TASM
Почему выдаёт ошибки неопределённый символ. Подскажите пожалуйста куда...


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

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

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