Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/20: Рейтинг темы: голосов - 20, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66

Кодировка в командной строке

22.02.2011, 17:42. Показов 4384. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу программу на ассемблере MASM,
программа должна выводить какое-то сообщение и некий массив чисел
но столкнулся с проблемой- когда запускаю программу в командной строке, то
сообщение выводится на экран нормально, а вот массив выводится, но какими-то китайскими иероглифами,
кажется- дело в кодировке, но в чем именно дело - понять не могу,
буду благодарен за советы....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2011, 17:42
Ответы с готовыми решениями:

Кодировка в командной строке
class FirstVar { public static void main (Stringargs) { String message ="Начальное значение"; System.out.println(message);...

Кодировка в командной строке (кириллица)
Добрый день! Писал программу в командной строке (файл .bat) на Windows 10 и для перехода на кириллицу использовал команду chcp 1251 и на...

Кодировка командной строки
Помоги плз разобраться, не могу понять почему в командной строке символы интерпретируются во всякие иерогрлифы. <Win+R> - Команда,...

18
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
22.02.2011, 17:51
Может быть, надо преобразовать элементы массива в символьный вид? Код бы посмотреть.
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 18:02  [ТС]
вот код:
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   Primer1    ; Заголовок программы
       PAGE    52,72      ; Размер страницы листинга
       INCLUDE macroio.inc  ; Включение
           ; спецификаций для файлов макроопределений
 
;      Сегмент данных
DATA   SEGMENT
;      Директивы определения данных
cr  equ 13  ; символ возврата каретки
lf  equ 10  ; символ перевода строки
soob    db  'D. Smith передает привет! $'
n   dw  6   ; число элементов массива
ma  dw  -156, 71, 1590, -8261, 12854,-57
str1    db  'Входной массив',cr,lf,'$'
str2    db  'Первый элемент массива - $'
viv db  240 dup(?) ; строка для вывода чисел
DATA   ENDS
 
;      Сегмент команд
PROG   SEGMENT 'CODE'
; Указание ассемблеру планировать по сегментному
; регистру все метки и имена, определяемые в 
; конкретном сегменте
       ASSUME  DS:DATA,ES:DATA,CS:PROG,SS:SPROG
START:                 ; Стартовая точка программы
       MOV     AX,DATA ;Назначение регистрам DS и
       MOV     DS,AX   ;ES адреса сегмента данных
       MOV     ES,AX
;      Команды программы
    @DispStr    soob    ; вывод сообщения
    @DispCh cr lf   ; переход на новую строку
 
; Вывод первого числа массива
    @DispStr    str2
    puti        2,ma,viv
    @DispStr    viv
    @DispCh cr lf
; Вывод всего массива
    @DispStr    str1
    mputi       2,n,ma,viv
    @DispStr    viv
    @DispCh cr lf
 
; Окончание программы, выход в DOC
       @Exit       ; Макрокоманда окончания программы
PROG   ENDS        ; Директива окончания сегмента
 
;      Сегмент стека размером 512 байт
SPROG  SEGMENT STACK   'STACK'
       DB      512 DUP(?)
SPROG  ENDS
       END     START  ; Директива окончания программы
Добавлено через 2 минуты
Результаты работы программы должны быть такими

D. Smith передает привет!
Первый элемент массива - -156
Входной массив
-156 +71 +1590 -8261 +12854 -57

НО (!)
буквенные сообщения выводятся нормально, а вот числа- какая фигня вроде китайских иероглифов
(насколько я знаю- обычно такое бывает при несоответствии кодировки..)
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
22.02.2011, 18:39
Кода-то нет, как такового, одни макросы. Здесь я посоветовать ничего не могу, но, если дело в кодировке, то почему правильно выводится текст?
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 19:02  [ТС]
В том то и дело,что текст выводится нормально.....
а все остальное- нет....
не знаю даже, что делать...
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
22.02.2011, 19:09
А какие-нибудь понятные символы выводятся, кроме иероглифов? Латинские буквы, например?
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 20:29  [ТС]
нет, выводятся непонятные иероглифы....

Добавлено через 1 час 7 минут
неужели никто не сталкивалс с подобными проблемами?
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
22.02.2011, 20:30
Сакен, не видя кода puti и mputi могу предположить только следующее: по-скольку ma - размерностью в слово, а viv - в байт, то при выводе слово "рвется" на 2 байта и каждый байт интерпретируется как какой-то символ.
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 20:37  [ТС]
qwarta, я интуитивно чувствую- что ты прав....
нас учат кодировать именно так,
как мне посмотреть код puti и mputi
что делать?
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
22.02.2011, 21:00
Сакен,
как мне посмотреть код puti и mputi
О_о Если программа запустилась, то этот файл (macroio.inc) находится у Вас в папке \MASM32\INCLUDE
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 21:27  [ТС]
вот то, что находится в библиотеке macroio.inc:

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
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
; DOS Interface Macros - Version 1.0 - for Microsoft Macro Assembler 5.0
; (C) Copyright Microsoft Corporation, 1987, 1988.
; (C) Copyright ***, Кафедра ***, 1996.
 
.XCREF
.XLIST
IF1
; Internal
__LdAdr MACRO reg, adr
    IF (.TYPE (adr)) AND 00010000b     ;; Register
        mov     reg, adr
    ELSEIF (.TYPE (adr)) AND 00000100b ;; Constant
        mov     reg, adr
    ELSEIF TYPE (adr) LE 10            ;; Bytes
        mov    reg, OFFSET adr
    ELSEIF TYPE (adr) EQ 0FFFFh        ;; Near pointer
        mov    reg, adr
    ELSEIF TYPE (adr) EQ 0FFFEh        ;; Far pointer
        lds    reg, adr
    ELSE
        .ERR
        %OUT Неправильный аргумент &adr
    ENDIF
ENDM
 
; Internal
__LdSeg MACRO dest, src
    IFIDNI <src>, <es>                 ;; Segment register
        mov     ax, src
        mov     dest, ax
    ELSEIFIDNI <src>, <ss>
        mov     ax, src
        mov     dest, ax
    ELSEIFIDNI <src>, <ds>
        mov     ax, src
        mov     dest, ax
    ELSEIFIDNI <src>, <ds>
        mov     ax, src
        mov     dest, ax
    ELSEIF (.TYPE (src)) AND 00000100b ;; Constant
        mov     ax, src
        mov     dest, ax
    ELSE                               ;; Memory or general register 
        mov     dest, src
    ENDIF
ENDM
 
; 01h, 07h, 08h, 0Ch
@GetKey MACRO echo, cc, clear
    LOCAL   funct, disp
    IFDIF   <echo>, <0>
        IFDIF   <cc>, <0>
            funct   = 01h
        ELSE
            funct   = 07h
            disp    = 02h
        ENDIF
    ELSE
        IFDIF   <cc>, <0>
            funct   = 08h
        ELSE
            funct   = 07h
        ENDIF
    ENDIF
    IFB     <clear>
        mov     ah, funct
    ELSE
        IFIDN   <clear>, <0>
            mov     ah, funct
        ELSE
            mov     ah, 0Ch
            mov     al, funct
        ENDIF
    ENDIF
    int     21h
    IFDEF   disp
        mov     dl, al
        mov     ah, disp
        int     21h
    ENDIF
ENDM
 
; 0Ah
@GetStr MACRO ofset, terminator, limit, segmnt
    __LdAdr dx, <ofset>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 0Ah
    mov     si, dx
    IFNB    <limit>
        mov     BYTE PTR [si], limit
    ENDIF
    int     21h
    inc     si
    mov     bl, [si]
    sub     bh, bh
    inc     si
    IFNB    <terminator>
        mov     BYTE PTR [bx+si], terminator
    ENDIF
ENDM
 
; 02h
@DispCh MACRO ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10
    mov     ah, 02h
    IRP     char, <ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10>
        IFB     <char>
            EXITM
        ENDIF
        mov     dl, char
        int     21h
    ENDM
ENDM
 
 
; 09h
@DispStr MACRO ofset, segmnt
    __LdAdr dx, <ofset>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 9
    int     21h
ENDM
 
; 3Fh
@Read MACRO ofset, bytes, handle, segmnt
    IFNB    <handle>
        mov     bx, handle
    ELSE
        sub     bx, bx
    ENDIF
    mov     cx, bytes
    __LdAdr dx, <ofset>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 3Fh
    int     21h
ENDM
 
; 40h
@Write MACRO ofset, bytes, handle, segmnt
    IFNB    <handle>
        mov     bx, handle
    ELSE
        mov     bx, 1
    ENDIF
    mov     cx, bytes
    __LdAdr dx, <ofset>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 40h
    int     21h
ENDM
 
; 4Ch
@Exit MACRO return
    IFB     <return>
        mov     ah, 4Ch
    ELSE
        mov     ax, 4C00h + (return AND 0FFh)
    ENDIF
    int     21h
ENDM
 
; 25h
@SetInt MACRO interrupt, vector, segmnt
    IF      TYPE (vector) GE 0FFFEh
        mov     dx, OFFSET vector
        mov     ax, SEG vector
        mov     ds, ax
    ELSE
        __LdAdr dx, <vector>
        IFNB    <segmnt>
            __LdSeg ds, <segmnt>
        ENDIF
    ENDIF
    mov     ax, 2500h + (interrupt AND 0FFh)
    int     21h
ENDM
 
; 3Ch
@MakFil MACRO path, atrib, segmnt, kind
    IFB     <atrib>
        sub     cx, cx
    ELSE
        mov     cx, atrib
    ENDIF
    __LdAdr dx, <path>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    IFIDNI  <kind>, <tmp>
        mov     ah, 5Ah
    ELSEIFIDNI <kind>, <new>
        mov    ah, 5Bh
    ELSE
        mov    ah, 3Ch
    ENDIF
    int     21h
ENDM
 
; 3Dh
@OpenFil MACRO path, access, segmnt
    __LdAdr dx, <path>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ax, 3D00h + (access AND 0FFh)
    int     21h
ENDM
 
; 3Eh
@ClosFil MACRO handle
    mov     bx, handle
    mov     ah, 3Eh
    int     21h
ENDM
 
; 41h
@DelFil MACRO path, segmnt
    __LdAdr dx, <path>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 41h
    int     21h
ENDM
 
; 56h
@MoveFil MACRO old, new, segold, segnew
    __LdAdr dx, <old>
    __LdAdr di, <new>
    IFNB    <segold>
        __LdSeg ds, <segold>
    ENDIF
    IFNB    <segnew>
        __LdSeg es, <segnew>
    ENDIF
    mov     ah, 56h
    int     21h
ENDM
 
; 4Eh
@GetFirst MACRO path, atrib, segmnt
    IFNB    <atrib>
        mov     cx, atrib
    ELSE
        sub     cx, cx
    ENDIF
    __LdAdr dx, <path>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 4Eh
    int     21h
ENDM
 
; 4Fh
@GetNext MACRO
    mov     ah, 4Fh
    int     21h
ENDM
 
; 42h
@GetFilSz MACRO handle
    mov     bx, handle
    sub     cx, cx
    sub     dx, dx
    mov     ax, 4202h
    int     21h
    push    dx
    push    ax
    sub     dx, dx
    mov     ax, 4200h
    int     21h
    pop     ax
    pop     dx
ENDM
 
; Internal
__LdDub MACRO dub
    IF   TYPE (dub) EQ 2
        sub  cx, cx
        mov  dx, dub
    ELSEIF TYPE (dub) EQ 4
        mov  cx, dub[2]
        mov  dx, dub[0]
    ELSEIF TYPE (dub) EQ 0
        sub     cx, cx
        mov     dx, dub
    ELSE
        .ERR
        %OUT Illegal argument
    ENDIF
ENDM
 
; 42h
@MovePtrAbs MACRO handle, distance
    IFNB    <distance>
        __LdDub <distance>
    ENDIF
    mov     bx, handle
    mov     ax, 4200h
    int     21h
ENDM
 
; 42h
@MovePtrRel MACRO handle, distance
    IFNB    <distance>
        __LdDub <distance>
    ENDIF
    mov     bx, handle
    mov     ax, 4201h
    int     21h
ENDM
 
; 
; Перевод целого числа формата байт в символьную форму
;   extrn   pti1:far
ptb macro   Anum,Astrng,Width,Rad,Sign
    local   osn,shir
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
    IFB <Rad>
    osn =   10
    mov DL,10
    ELSEIFIDN   <Rad>,<10>
    mov DL,10
    osn =   10
    ELSEIFIDN   <Rad>,<16>
    mov DL,16
    osn =   16
    ELSEIFIDN   <Rad>,<2>
    mov DL,2
    osn =   2
    ELSE
       %out 'Неправильное основание &Rad системы счисления'
       .err
    ENDIF
    IFB <Sign>
    mov DH,1
    ELSEIFIDN   <Sign>,<1>
    mov DH,1
    ELSEIFIDN   <Sign>,<0>
    mov DH,0
    ELSE
       %out 'Неправильный признак &Sign знака числа'
       .err
    ENDIF
    IFNB    <Width>
    mov BX,Width
    ELSEIF  (osn EQ 10) OR (osn EQ 16)
    mov BX,5
    ELSEIF  osn EQ 2
    mov BX,10
    ENDIF
    call    far ptr pti1
    endm
 
;
; Перевод массива чисел формата байт в символьную форму
mptb    macro   Many,Anum,Astrng,Width,Rad,Sign
    local   cc
    mov CX,Many
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
cc: ptb SI,DI,Width,Rad,Sign
    loop    cc
    endm
 
;
; Перевод числа формата слово в символьную форму
;   extrn   pti2:far
ptw macro   Anum,Astrng,Width,Rad,Sign
    local   osn,shir
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
    IFB <Rad>
    osn =   10
    mov DL,10
    ELSEIFIDN   <Rad>,<10>
    mov DL,10
    osn =   10
    ELSEIFIDN   <Rad>,<16>
    mov DL,16
    osn =   16
    ELSEIFIDN   <Rad>,<2>
    mov DL,2
    osn =   2
    ELSE
       %out 'Неправильное основание &Rad системы счисления'
       .err
    ENDIF
    IFB <Sign>
    mov DH,1
    ELSEIFIDN   <Sign>,<1>
    mov DH,1
    ELSEIFIDN   <Sign>,<0>
    mov DH,0
    ELSE
       %out 'Неправильный признак &Sign знака числа'
       .err
    ENDIF
    IFNB    <Width>
    mov BX,Width
    ELSEIF  (osn EQ 10) OR (osn EQ 16)
    mov BX,8
    ELSEIF  osn EQ 2
    mov BX,20
    ENDIF
    call    far ptr pti2
    endm
 
;
; Перевод массива чисел формата слово в символьную форму
mptw    macro   Many,Anum,Astrng,Width,Rad,Sign
    local   cc
    mov CX,Many
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
cc: ptw SI,DI,Width,Rad,Sign
    loop    cc
    endm
 
; 
; Перевод числа формата двойное слово в символьную форму
;   extrn   pti4:far
ptd macro   Anum,Astrng,Width,Rad,Sign
    local   osn,shir
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
    IFB <Rad>
    osn =   10
    mov DL,10
    ELSEIFIDN   <Rad>,<10>
    mov DL,10
    osn =   10
    ELSEIFIDN   <Rad>,<16>
    mov DL,16
    osn =   16
    ELSEIFIDN   <Rad>,<2>
    mov DL,2
    osn =   2
    ELSE
       %out 'Неправильное основание &Rad системы счисления'
       .err
    ENDIF
    IFB <Sign>
    mov DH,1
    ELSEIFIDN   <Sign>,<1>
    mov DH,1
    ELSEIFIDN   <Sign>,<0>
    mov DH,0
    ELSE
       %out 'Неправильный признак &Sign знака числа'
       .err
    ENDIF
    IFNB    <Width>
    mov BX,Width
    ELSEIF  (osn EQ 10) OR (osn EQ 16)
    mov BX,16
    ELSEIF  osn EQ 2
    mov BX,40
    ENDIF
    call    far ptr pti4
    endm
 
;
; Перевод массива чисел формата двойное слово в символьную форму
mptd    macro   Many,Anum,Astrng,Width,Rad,Sign
    local   cc
    mov CX,Many
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
cc: ptd SI,DI,Width,Rad,Sign
    loop    cc
    endm
; Вывод одного числа любого формата кода
puti    macro   Fcod,Anum,Astrng,Width,Rad,Sign
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
    IF  (Fcod NE 1) and (Fcod NE 2) and (Fcod NE 4)
    .ERR
    %out    'Неправильный аргумент &Fcod кода числа.'
    %out    'Допустимы значения 1, 2 или 4'
    EXITM
    ENDIF
    extrn   pti&Fcod :far
    IFB <Rad>
    osn =   10
    mov DL,10
    ELSEIFIDN   <Rad>,<10>
    mov DL,10
    osn =   10
    ELSEIFIDN   <Rad>,<16>
    mov DL,16
    osn =   16
    ELSEIFIDN   <Rad>,<2>
    mov DL,2
    osn =   2
    ELSE
       %out 'Неправильный аргумент &Rad основания системы счисления'
       .err
    ENDIF
    IFB <Sign>
    mov DH,1
    ELSEIF  Sign LE 1
    mov DH,Sign
    ELSE
       %out 'Неправильный признак &Sign знака числа'
       .err
    ENDIF
    IFNB    <Width>
    mov BX,Width
    ELSEIF  osn EQ 2
    mov BX,Fcod*10
    ELSE
    mov BX,Fcod*5
    ENDIF
    call    far ptr pti&Fcod
    endm
; Вывод массивом
mputi   macro   Fcod,Many,Anum,Astrng,Width,Rad,Sign
    local   cc
    mov CX,Many
    __LdAdr SI,<Anum>
    __LdAdr DI,<Astrng>
cc: puti    Fcod,SI,DI,Width,Rad,Sign
    loop    cc
    endm
ENDIF   ; Pass 1
.cref
.list
Добавлено через 1 минуту
может быть такое, что в билиотеке что-то не так прописано
в своей котрольной работе мы используем ее, но внутрь не лазим, работаем с тем, что нам дается...
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
22.02.2011, 21:44
Сакен,
может быть такое, что в билиотеке что-то не так прописано
Сомневаюсь...
Навскидку, в макросе mputi 7 параметров, у Вас в программе - 4. В макросе puti 6 параметров, у Вас - 3.
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 21:47  [ТС]
то есть нужно изменить параметры в программе?
а что именно?
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
22.02.2011, 22:51
Видимо, их количество.
Сакен, это ВАША программа или...

Добавлено через 53 минуты
P.S.
Сакен,
может быть такое, что в билиотеке что-то не так прописано
qwarta,
Сомневаюсь...
Assembler
1
2
3
4
Строка 22:  
%OUT Неправильный аргумент &adr
должна выглядеть так:  
%OUT 'Неправильный аргумент &adr'
1
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
22.02.2011, 22:57  [ТС]
понял, исправил, большой спасибо,
пытаюсь разобраться с параметрами....(!?)
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
23.02.2011, 00:12
Так. С параметрами, кажется, все в порядке. Там применяются директивы условной компиляции.
При вызове макрокоманды они анализируют значение аргумента, и в зависимости от того, равно оно пробелу или нет, транслируется либо фрагмент_программы_1, либо фрагмент_программы_1.
Т.е., если аргумент пропущен - это не есть ошибка.
А дальше надо глубже "копать" macroio.inc. Там есть макросы перевода числа из одной системы в другую.
Перед выводом на экран это нужно сделать. И не нравится мне размерность viv
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
23.02.2011, 08:33
Добавлено через 51 минуту
Может надо ещё какой-то файл подключить? Я скомпилировал программу, при линковке было замечание по поводу pti2.
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
23.02.2011, 11:17
Vadimych, судя по этой теме Копирование файла pti1, pti2, pti4 "спрятаны" в dos.inc. У меня этих файлов нет, проверить не могу.
0
0 / 0 / 1
Регистрация: 23.08.2010
Сообщений: 66
25.02.2011, 13:33  [ТС]
Vadimych, да, ты прав, при ассемблировании ошибок нет, а вот при линковке указывает на ошибку:
LINK : error L2029: Unresolved externals:

PTI2 in file(2):
primer1.obj(primer1.asm)

there was 1 error detected

что это значит?
где искать ошибку?

Добавлено через 11 минут
вот что выдал гугл:

L2029
/
L2041
L2043
L2044
“Неразрешимые внешние ссылки”. В одном или более модулях одно или более имен описаны как внешние, но они не были определены ни в одном из модулей или библиотек. После сообщения появляется список неразрешимых внешних ссылок, как показано в следующем примере:
_PEXIT in filc(s): MAIN.OBJ (main.c) _POPEN in file(s): MAIN.OBJ (main.c)
Имя, которое идет перед ‘in file(s)’, – это неразрешимое внешнее имя. В следующей строке – список объектных модулей, имеющих ссылки на данное имя.

Добавлено через 39 минут
все,разобрался...
при линковке нужно было указать библиотеку:

link primer1,,nul,ioint;

тему можно считать закрытой!
спасибо всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2011, 13:33
Помогаю со студенческими работами здесь

Кодировка текста командной строки
Нашёл в интернете код для запуска командной строки и получения вывода function GetDosOutput(CommandLine: string; Work: string = 'C:\'):...

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

Компиляция в командной строке
Файл First.java package packone; class Class { public static void print () { System.out.println(&quot;Text&quot;); ...

Вопрос по командной строке
Здравствуйте! Учусь на втором курсе по специальности «Информатика и выч. техника». У нас появился новый предмет «Операционные системы», и...

Вопросы по командной строке
Здравствуйте! У меня есть пару вопросов по командным файлам. Буду очень признателен если вы мне поможете. 1. С помощью какой команды...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru