@XRFD

Программа как сделать com file?

подскажите как сделать этот код в com файл пробовал .model tiny пишет segment relocate помогите решить проблему очень надо.
.model compact
; Сегмент стека
s_seg segment
db 128 dup(?)
s_seg ends

; Сегмент данных
d_seg segment
str_prompt db 'Enter string: $'
str_result db 13,10,'Chars: $'
tab db 256 dup(0) ; массив всех возможных символов
d_seg ends

; Сегмент сода
c_seg segment 'code'
; привязываем метки к адресам сегментов
assume ds:d_seg, ss:s_seg, cs:c_seg
main:
; устанавливаем сегмент стека
mov ax, s_seg
mov ss, ax
; устанавливаем сегмент данных
mov ax, d_seg
mov ds, ax


; печатем приглашение
mov ah, 09h
lea dx, str_prompt
int 21h

xor bx, bx
@1: ; читаем символ
mov ah, 01h
int 21h
; проверяем конец строки
cmp al, 13
je @2
; отмечаем в таблице
mov bl, al
mov tab[bx], 1
jmp @1

; печатем результат
@2: mov ah, 09h
lea dx, str_result
int 21h

mov cx, 256
xor bx, bx
@3: ; проверяем отметку в таблице
cmp tab[bx], 1
jne @4
; печатаем символ
mov ah, 02h
mov dl, bl
int 21h
; сдвигаемся по таблице
@4: inc bx
loop @3

; выход из программы
mov ax, 4C00h
int 21h
c_seg ends

end main
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
; устанавливаем сегмент стека
mov ax, s_seg
mov ss, ax
; устанавливаем сегмент данных
mov ax, d_seg
mov ds, ax


пишет segment relocate

Ну правильно пишет, вот же у тебя код хочет загрузить в ax то s_seg, то d_seg как константы, откуда он их возьмёт без релокаций? Если хочешь com-файл, то либо пиши вместо этого mov ax, cs ; mov ds, ax, либо вообще этот код выкинь, потому что com-файл и так стартует со всеми сегментами указывающими в одно и то же место.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы