у мну лам проблем. имеется такой код на масм: Code: .DATA Buff db 100 .code start: mov [Buff], byte "A" end start: надо вообщем в буффер вставить А. но ошибка. помогите пожалуйсто
2 x-treem тебе нужно весь буфер забить символом A? Если а то вот код на FASM Code: xor edi,edi m: mov [Buff+edi], byte "A" inc edi cmp edi,100 jbe m я с масм не работал, поэтому незнаю прокатит mov [Buff+edi], byte "A" или нет. Ты попробуй сделать так: Code: xor edi,edi lea ebx,buff mov al,"A" m: mov [ebx+edi], byte al inc edi cmp edi,100 jbe m
не, мне нуна добавлять туда символы. сначала например А потом Hello потом puki а потом вывести в мессаджбоксе
2x-treem: Если мне не изменяет память, так работать с памятью нельзя. Надо через регистры. Типа: mov AL, byte "A" mov [Buff], AL
Ну тогда юзай АПИ функцию Code: mov [Buff], 0 invoke lstrcat,[Buff],'HELLO' ; добавить данные к буферу
iv. с памятью можно так работать, это же не из одного места памяти в другое, это в область памяти число пересылается... команда mov - это сделать в силах! mov Buff, "A" x-treem Code: .386 .model flat, stdcall option casemap:none .DATA? Buff db 100 dup(?) .code start: mov [Buff], "A" ret end start Нужно было обьявить правильно буфер "Buff db 100 dup(?)" + "end start:" - двоеточие не нужно... P.S. x-treem Символы добавляются откуда? из DATA или просто в коде по штуке? или тебе сразу строку можно в буфер положить?
у мну lstrcat не работает. то естьвот и нету мессадж бокса. да и вообще только 4 символа можно добавить что тут не так?
"HELL" должна быть определена в .data как строка ---------Пример функции lstrcat---------------- .data hell db "HELL",0 .code invoke lstrcat,addr Buff,addr hell ------------------Работа с символами------------------- lea edi, Buff mov al, "и" mov byte ptr ds:[edi] , al xor al,al inc edi mov al,"з" mov byte ptr ds:[edi] ,al имхо так
x-treem Если ты пишешь на masm'e то все данные в виде строк и т.д. нужно хранить в .data ,а буферы в .data? ... В fasm'e немного по другому... Code: ;################################################### .386 .model flat, stdcall option casemap :none ; case sensitive ;################################################### include C:\masm32\include\windows.inc include C:\masm32\include\user32.inc include C:\masm32\include\kernel32.inc includelib C:\masm32\lib\user32.lib includelib C:\masm32\lib\kernel32.lib ;################################################### .DATA Buff db 100 dup(?) szMsg db "Hello",0 ;################################################### .code start: mov Buff, "A" invoke MessageBox, 0, ADDR Buff, ADDR Buff, 40h invoke MessageBox, 0, ADDR szMsg, ADDR szMsg, 40h invoke lstrcpy, ADDR Buff, ADDR szMsg invoke MessageBox, 0, ADDR Buff, ADDR Buff, 40h invoke ExitProcess, 0 end start ;################################################### Некоторые приемы вывода в Мессаге...
как обычно компилю тасмом com программу --------------------код------------------------ cseg segment assume cs:cseg, ds:cseg,es:cseg,ss:cseg org 100h start: mov ax, 0b800h mov es,ax mov di, 0 mov ah,31 mov al, 1 mov es:[di], ax mov ax, 10h int 16h int 20h cseg ends end start --------------------код------------------------ tasm program.asm tlink program.obj/t/x все ок(тасм ошибок никаких не выдает) , запускаю из командной строчки и программа виснет(ОС не виснет) , смайлик не выводится.... хотя раньше выводился. В чем может быть проблема?
FeraS интерсно как это у тебя получилось , если у меня там ошибка (вместо mov ax, 10h нужно было писать mov ah, 10h) ? Но даже так не работает
опять же смотря чем компилить и как проверять результат если в отладчике то он перед запуском обнулит все регистры и вообще это не синтаксическая ошибка и повлиять на компиляцию не может
Не поверишь, но с помощью компилятора. TASM, MASM, FASM, NASM.. Я бы на твоем месте сразу убился, задавая такие вопросы.
не все так просто я в MASM вставляю код щелкаю в меню Project по кнопке Compile Resourse файл и он мне пишет no file loaded
в qeditor'е пакета masm32 вверху вкладка Project и там выбираешь Build All или батфайлом Example: Code: @echo off if exist Keygen.exe del Keygen.exe if exist Keygen.obj del Keygen.obj if exist rsrc.res del rsrc.res if exist rsrc.obj del rsrc.obj \masm32\bin\ml /c /coff Keygen.asm \masm32\bin\rc rsrc.rc \masm32\bin\cvtres /machine:ix86 rsrc.res \masm32\bin\Link /SUBSYSTEM:WINDOWS Keygen.obj rsrc.obj if exist Keygen.obj del Keygen.obj if exist rsrc.obj del rsrc.obj if exist rsrc.res del rsrc.res Пример взят из обычного Keygen Template'а
блин вроде разобрался) только там код шо писец... несколько страниц сурового кода в одну строчку и ниодного коментария. пишет что нельзя скомпилить изза того что строчка слишком длинная.((((