Имеется программа выводящая надипись на экран: Код (Text): .model small .stack 100h .data string db "Hi!",13,10,"$" ;string_len = $ - string .code start: mov ax, @data mov ds, ax l00p: lodsb test al, al jz exit mov bx, 07h mov ah, 0Eh int 010h jmp l00p exit: mov ax, 4C00h ; the exit fuction [4C+no error (00)] int 21h ; call DOS interrupt 21h end start Помогите пожалуйста ее переделать в COM файл. Я никак не пойму, как сделать что бы данные и код находились в одном сегменте....=(((
Я - просто полный ламер.... я не могу после этого загрузить их в ds и ax Я вот как делаю: Код (Text): .model small .stack 100h .data .code start: mov ax, offset string mov ds, ax l00p: lodsb test al, al jz exit mov bx, 07h mov ah, 0Eh int 010h jmp l00p exit: mov ax, 4C00h ; the exit fuction [4C+no error (00)] int 21h ; call DOS interrupt 21h string db "Hi!",13,10,"$" end start но это неправильно...=(((
Код (Text): .model tiny .code org 100h start: mov ax, seg string mov ds, ax mov si, offset string l00p: lodsb test al, al jz exit mov bx, 07h mov ah, 0Eh int 010h jmp l00p exit: mov ax, 4C00h ; the exit fuction [4C+no error (00)] int 21h ; call DOS interrupt 21h string db "Hi!",13,10,"$" end start
Не получается, пишет: Компилирую вот так: D:\tasm\bin\tasm /Zi Asm1.asm D:\tasm\bin\tlink /t Asm1.obj
нет .code тут обязательно. Если не будет сегмента кода, то тогда прога как вообще будет существовать то... P.S. блина, хотя я вообще asm почти не знаю, попробую, но наврятли..
Конечно же не прокатило.... Насколько я понимаю тут ошибка в стоке Код (Text): mov ax, seg string Подскажите как без нее обойтись?
Код (Text): ; hello-l.asm ; Выводит на экран сообщение "Hello World!" и завершается .model tiny ; модель памяти, используемая для СОМ .code ; начало сегмента кода org 100h ; начальное значение счетчика - 100h start: mov ah,9 ; номер функции DOS - в АН mov dx,offset message ; адрес строки - в DX int 21h ; вызов системной функции DOS ret ; завершение СОМ-программы message db "Hello World!",0Dh,0Ah,'$' ; строка для вывода end start ; конец программы Исходник от Зубкова. tasm hello-1.asm tasm /t /x hello-1.obj
Код (Text): .model tiny .code .386 org 100h start: lea dx,string mov ah,9 int 21h ret string db 'Hi!$' end start ЗЫ: Опередили
Всем спасибо! В общемя сам догадался как надо сделать: Всего лишь вот так: Код (Text): .model tiny .386 .code org 100h start: mov ah, 03 xor bh, bh int 10h mov cx, 24 mov bx, 0007 lea bp, message mov ax, 1301h int 10h int 20h message db "Handling BIOS interrupts" end start