Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Что ответить?? :(( (по поводу ASMа)   Найти похожие ветки 

 
vidiv ©   (2004-05-30 15:14) [0]

Я написал программу на asm, она из контрольной. у меня она работает номально и компилируется тоже нормально.
Однако однако человек который ее проверял отверг ее словами "Программа не проходит линковку. Пожалуйста, укажите, каким образом Вы получаете исполняемый файл."
Если вам не труно немоглы бы вы мне уточнить, что ответить на заданный вопрос??

вот исходник
proc.asm:
.model tiny
.code
n  db ?
mstate db 0
rdx dw 0
stri db 255 DUP(254)
res1 db 255 DUP("$")
res2 db 255 DUP("$")
res3 db 255 DUP("$")
str1 db "Enter your string: $"   ; Понятно и так
str2 db "Result 1: $"   ; Понятно и так
str3 db "Result 2: $"   ; Понятно и так
str4 db "Result 3: $"   ; Понятно и так
retu db 0dh, 0ah, "$"

start:
push cs
pop ds

mov ah, 09h
mov dx, offset str1
int 21h

mov bx, offset stri

mov  [bx], 255

mov  dx, bx
mov ah, 0Ah
int 21h

call crline

xor ax, ax
add bx, 1
mov al, [bx]

mov dx, offset res1

xor cx, cx
do:
mov bx, offset stri
add bx, 2
add bx, cx
mov bl, [bx]
mov n, bl
add cl, 1
cmp cl, al
ja show_result

; cmp mstate, 0
; ja noadd_label

cmp n, ":"
jz next_state

call add_n;

jmp do

add_n:
mov bx, dx
push ax
mov al, n
mov [bx], al
pop ax
add dx, 1
cmp  mstate, 1
jz add_2
ret
add_2:
push dx
mov dx, rdx
mov bx, dx
push ax
mov al, n
mov [bx], al
pop ax
add dx, 1
mov rdx, dx
pop dx
ret

next_state:
add  mstate, 1
cmp mstate, 1
jz setdx_res
call add_n
jmp do

setdx_res:
call add_n
mov dx, offset res3
mov rdx, dx
mov dx, offset res2
jmp do

show_result:
mov ah, 09h
mov dx, offset str2
int 21h
mov dx, offset res1
int 21h
call crline

mov ah, 09h
mov dx, offset str3
int 21h
mov dx, offset res2
int 21h
call crline

mov ah, 09h
mov dx, offset str4
int 21h
mov dx, offset res3
int 21h
call crline

jmp exit

crline:
mov ah, 09h
mov dx, offset retu
int 21h
ret

exit:
mov ax,4C00h ;Выходим
int 21h
end start


 
vidiv ©   (2004-05-30 15:16) [1]

вот краткое описание:
Ввести массив символов (строку) stri.
Присвоить переменной состояния mstate (тип byte) значение 0.
Далее перебирать по порядку символы строки stri и если встретиться “:” то увеличивать mstate на единицу. Если mstate равно 0, то текущий символ добавить к строке res1, если 1, то к строкам res2 и res3, и если 2 и более то строке res2.
Вывести строки res1, res2, res3 в качестве результата на задания а, б и в.


 
Gero ©   (2004-05-30 15:20) [2]


> что ответить на заданный вопрос??

"Понимаете, мне очень нужна четверка. Я могу предожить Вам <сумма денег, которую можете предложить>".

Но это только один из возможных вариантов.


 
sniknik ©   (2004-05-30 15:30) [3]

> .model tiny
это вроде для создания "*.com"? и конструкция для MASM? нет? давно не писал, забыл. но к примеру в TASM-е эта конструкция не то что линковку, компиляцию не пройдет. (хотя обьектник вроде получается стандартный, и должен линковаться)

подведи его к компьютеру и собери программу сам, своими средствами. т.е. действительно покажи как получаеш исполняемый файл. думаю это поможет снять "недоразумение" между вами.


 
Petr V. Abramov ©   (2004-05-30 15:39) [4]

> ее словами "Программа не проходит линковку. Пожалуйста,
> укажите, каким образом Вы получаете исполняемый файл."
 
> что ответить
 "Путем компипяции и линковки, а у Вас руки кривые, раз слинковать не умеете и меня еще спрашиваете, как это сделать. LMD"

> Программа не проходит линковку
 Из серии "ошибка в 17-й строке", только не у Вас, а у него.


 
GuAV ©   (2004-05-30 16:37) [5]


> > Программа не проходит линковку
>  Из серии "ошибка в 17-й строке", только не у Вас, а у него.

Ошибку удалось повторить:
C:\PROG\TASM\BIN>tasm proc
Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   proc.ASM
*Warning* proc.ASM(26) Argument needs type override
Error messages:    None
Warning messages:  1
Passes:            1
Remaining memory:  401k

C:\PROG\TASM\BIN>tlink /t proc
Turbo Link  Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Fatal: Cannot generate COM file : data below initial CS:IP defined


 
sniknik ©   (2004-05-30 18:01) [6]

точно значит com, у него насколько помню первой командой (которая в 100h линкуется) должна быть jmp на код или рабочий код а тут данные.
>  Из серии "ошибка в 17-й строке", только не у Вас, а у него.
нет ошибка как раз у вас.


 
GuAV ©   (2004-05-30 18:29) [7]

Вообще можно исправить так:
.code -> .data
start: -> .code
                   startupcode
end start -> end


 
Petr V. Abramov ©   (2004-05-30 18:34) [8]

.model tiny
.code
org(100h)
start:
jmp start_code

n  db ?
mstate db 0
rdx dw 0
stri db 255 DUP(254)
res1 db 255 DUP("$")
res2 db 255 DUP("$")
res3 db 255 DUP("$")
str1 db "Enter your string: $"   ; Понятно и так
str2 db "Result 1: $"   ; Понятно и так
str3 db "Result 2: $"   ; Понятно и так
str4 db "Result 3: $"   ; Понятно и так
retu db 0dh, 0ah, "$"

start_code:
push cs
pop ds
 и далее по тексту

>>  Из серии "ошибка в 17-й строке", только не у Вас, а у него.
> нет ошибка как раз у вас.
 А как было по-другому добиться, чоб сообщение о ней в студии было :)

Кстати, у меня даже запустился этот .com-файл :)


 
GuAV ©   (2004-05-30 18:50) [9]


>  А как было по-другому добиться, чоб сообщение о ней в студии
> было :)

Сообщение получить нетрудно если есть исходник и компилятор :)


 
Petr V. Abramov ©   (2004-05-30 19:02) [10]

Дак я его (компилятор) искал и скачивал полтора часа :)
 А вообще-то "не компилится", "не линкуется", "не работает"...
 Без обид :)


 
vidiv ©   (2004-05-31 06:42) [11]


> GuAV ©   (30.05.04 16:37) [5]

Большое спасибо за ценную инфомацию о том что такое линкование:)


> sniknik ©   (30.05.04 18:01) [6]
> Petr V. Abramov ©   (30.05.04 18:34) [8]

Большое спасибо за способ решения проблемы! - проблема решена!!!

Все сделал как посоветовали:)
Всем спасибо:)


 
vidiv ©   (2004-05-31 06:49) [12]


> Petr V. Abramov ©   (30.05.04 18:34) [8]
> .model tiny
> .code
> org(100h)
> start:
> jmp start_code

Только хотелось внести ясность: что означает строка org(100h) ??


 
atruhin ©   (2004-05-31 07:39) [13]

org(100h) - следующую инструкцию разместить по смещению 100h
com файл всегда начинает выполнятся со смещения 100h в данном случае там будет находится jmp start_code


 
vidiv ©   (2004-05-31 10:04) [14]


> atruhin ©   (31.05.04 07:39) [13]

Спасибо!! теперь все ясно!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.031 c
9-1074890287
KEHTABP
2004-01-23 23:38
2004.06.13
SplitScreen в DelphiX


3-1085032891
Alex_x
2004-05-20 10:01
2004.06.13
технология доступа в MIDAS?


11-1074872156
=Sniper=
2004-01-23 18:35
2004.06.13
Как мне установить каретку в RichEdir на позицию например 11?


14-1085643171
olookin
2004-05-27 11:32
2004.06.13
Америка и СССР в ВОВ: любопытные сведения


1-1085725841
Susanoo
2004-05-28 10:30
2004.06.13
Элементы MainMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский