Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2014, 15:31   #1
Sergey__
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 2
По умолчанию Проблема при линковке

Добрый день!
Сделал работу а она почему-то не линкуется в досбоксе
Код:
LOCALS
.model small
.stack 100h
.386
.const
    cError              db          00h
    cAdd                db          '+'
    cSub                db          '-'
    cMul                db          '*'
    cDiv                db          '/'
    cEsc                db          27
    cEndString          db          '$'
.data
    function            dw          00h
    sMenu               db          'Add - [+], Sub - [-], Mul -[*], Div - [/], Exit - [ESC]', '$'
    sChooseOperation    db          0Dh, 0Ah, 'Choose operation: ', '$'
    sError              db          0Dh, 0Ah,'Error', '$'
    sDigitA             db          0Dh, 0Ah, 'Number A: ', '$'
    sDigitB             db          0Dh, 0Ah, 'Number B: ', '$'
    sOut                db          0Dh, 0Ah, 'Answer: ', '$'
    buffer              db          05h, 7 dup (?)
.code
start:
    mov AX, @data
    mov DS, AX  
@@main_cycle:
    call draw_menu
    call choose_operation
    cmp AL, cError
    je @@error
    mov function, AX
    lea DX, sDigitA
    call get_number
    mov BX, AX
    lea DX, sDigitB
    call get_number
    xchg AX, BX
    call DS:[function]
    lea DX, sOut
    call print
    call str2Num
    call getch
    jmp @@main_cycle
@@error:
    call error_msg
    jmp @@main_cycle
@@exit:
    call exit
 
get_number proc
    push BX
    pushf
    call print
    lea DX, buffer
    mov AH, 0Ah
    int 21h
; Transform string to number
    lea SI, buffer
    xor BX, BX
    inc SI
    mov BL, byte ptr DS:[SI]
    inc SI
; Put 00h in the end of string
    mov byte ptr [SI + BX], 00h
    call str2Num
    popf
    pop BX
    ret
endp
 
    push BX DX
    test AX, AX
    jns @@not_signed
    mov BX, AX
    mov AH, 02h
    mov DL, '-'
    int 21h
    mov AX, BX
    neg AX
@@not_signed:
    xor CX, CX
    mov BX, 0Ah
@@cycle:
    xor DX, DX
    div BX
    push DX
    inc CX
    test AX, AX
    jnz @@cycle
    mov AH, 02h
@@output:
    pop DX
    add DL, '0'
    int 21h
    loop @@output
    pop DX BX
    ret
endp
 
str2Num proc
    push BX SI
    pushf
    xor AX, AX
    xor BX, BX
    cld ; reset DF to null
    lodsb
    push AX
    cmp AL, '+'
    je @@convert
    cmp AL, '-'
    je @@convert
    dec SI
@@convert:
    lodsb 
    sub AL, '0'
    cmp AL, 9d
    ja @@not_digit
    imul BX, 10d
    add BX, AX
    jmp @@convert
@@not_digit:
    mov AX, BX
    pop BX
    cmp BX, '-'
    jne @@return
    neg AX
@@return:
    popf
    pop SI BX
    ret
endp
 
draw_menu proc
    push AX DX
    mov AX, 0003h
    int 10h
    lea DX, sMenu
    call print
    pop DX AX
    ret
endp
choose_operation proc
    push DX
    lea DX, sChooseOperation
    call print
    call getch
	endp
@@add:
    cmp AL, cAdd
    jne @@sub
    mov AX, offset add_emul
    jmp @@return
@@sub:
    cmp AL, cSub
    jne @@imul
    mov AX, offset sub_emul
    jmp @@return
@@imul:
    cmp AL, cMul
    jne @@idiv
    mov AX, offset imul_emul
    jmp @@return
@@idiv:
    cmp AL, cDiv
    jne @@exit
    mov AX, offset idiv_emul
    jmp @@return
@@exit:
    cmp AL, cEsc
    jne @@error
    call exit
    jmp @@return
@@error:
    mov AL, cError
@@return:
    pop DX
    ret
endp
 
;-------------------------------------
; Read character to AL
;-------------------------------------
getch proc
    mov AH, 01
    int 21h
    ret
endp
print proc
 
    push AX
    mov AH, 9h
    int 21h
    pop AX
    ret
endp
 
add_emul proc 
    push BX CX DX BP
    xor BP, BP
    mov DI, AX
    mov SI, BX
    xor DX, DX
    mov CX, 16
@@cycle:
    mov AX, DI
    mov BX, SI
    
    and AL, 1
    and BL, 1
    mov BH, AL
    xor AL, BL ; AL - partial sum
    and BH, BL ; BH - partial carry
    mov AH, AL
    xor AL, DL ; DL - previous carry, current sum
    and AH, DL
    or AH, BH
    mov DL, AH ; DL - new carry
    
    xor BX, BX
    mov BL, AL
    or BP, BX
    ror BP, 1
    ror DI, 1
    ror SI, 1
loop @@cycle
    mov AX, BP
    pop BP DX CX BX
    ret
endp
 
sub_emul proc 
    not BX
    inc BX
    call add_emul
    ret
endp
 
 imul_emul proc 
    imul BX
    ret
endp
 
idiv_emul proc 
    push DX
    cwd
    idiv BX
    pop DX
    ret
endp
 
error_msg proc
    pushf
    mov AH, 9
    lea DX, sError
    int 21h
    popf
    ret
endp
 
;-------------------------------------
; Exit to DOS
;-------------------------------------
exit proc
    mov     AH, 4Ch
    int     21h
    ret
endp
end start
мои действия в окне досбокса:
Код:
mount e c:\tasm
e:
tasm lab.asm
tlink lab.asm
при линковке выскакивает вот такая ошибка:
Может быть что-то не так делаю? подскажите, если не трудно
Изображения
Тип файла: jpg Снимок.jpg (34.5 Кб, 122 просмотров)
Sergey__ вне форума Ответить с цитированием
Старый 06.10.2014, 18:48   #2
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

Вообще-то компоновщику нужно скармливать не ASM-файл, а OBJ.
AbakBarama вне форума Ответить с цитированием
Старый 06.10.2014, 20:40   #3
Sergey__
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 2
По умолчанию

ох, точно, благодарю)
Sergey__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при линковке моей DLL Mary_fs Общие вопросы C/C++ 7 06.06.2014 21:34
Ошибки при линковке: apofioz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 17.02.2014 22:44
Ошибки при линковке. ТриСемёрки Общие вопросы C/C++ 3 02.09.2010 21:31
MS Visual C++, ошибка при линковке... Пепел Феникса Visual C++ 2 08.09.2009 16:20
Ошибка при линковке Лотос Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 25 22.02.2009 20:24