push offset str call [lstrlen] или rep scasb либо мой способ,повторять пока байт не будет равен = 00.
Jes, держи сорц http://pastebin.x3k.ru/388 Исправил ряд детских ошибок на синтаксис, коечто оптимизировал, сделал код читабельным... компелируй
ASM compiling Компилирую фаил , выдаёт ошибку : Code: C:\MASM611\BIN>amake 1ll C:\MASM611\BIN>ml /c /coff "1ll.asm" Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: 1ll.asm C:\MASM611\BIN>link /SUBSYSTEM:CONSOLE "1ll.obj" Microsoft (R) Incremental Linker Version 6.00.8168 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : error LNK2001: unresolved external symbol _start 1ll.exe : fatal error LNK1120: 1 unresolved externals ------------------ Код фаила : Code: .386 .model flat.stdcall .code start: mov eax, 2 add eax, 3 ret end start --------------- что нетак ?
1. код нужно вставлять в теги CODE 2. Для подобных вопросов существует тема https://forum.antichat.ru/thread40850.html 3. раз уж ты всетаки здесь запостил... скинь бат-файл для компиляции, который ты используешь... меня смущает link /SUBSYSTEM:CONSOLE "1ll.obj" 4. после flat запятая
Непомогает .... ------ Люди добрые и злые , накачал я кучу книг по асме и чёта както ниодну непонимаю , где команды гдепеременные , неужели я , такой тупой , или увсех так было в начале ... посоветуйте как мне быть , мож книжку какуюто особенную . пожалусто ..
lomerok >где команды гдепеременные Обычно сначала оператор (комманды) потом 2 операнда чере запятую. прим: MOV AX,BX MOV - Оператор AX & BX - Операнды Переменные - это те которые обьявленны в секции .data (инициализированные) .data?(неинициализированные), а в .const - константы > неужели я , такой тупой Строгое замечание! Нет, ты не тупой. Просто не понял вот и всё. Мы все до единого сначала даже ползать не умели а сейчас бегаем! Вот видишь. Ничё короче страшного в том что ты не понимаешь пока что. Не считай себя тупым никогда. Быть новичком не стыдно, а если какой нить кретин тебя за это будет когда нибудь упрекать - бей в носопырку, пусть юшкой умоется! Короче, удачи в этом деле. Даже самые крутые программисты когда-то тупо сидели и втыкали в талмуды Кнутта с умным видом, но нихера не понимали. Всё приходит со временем. De-visible:не надо постить подряд, есть кнопка Edit
Повторюсь .. Компилирую фаил : Code: .386 .model flat,stdcall .code start: mov eax, 8 add eax, 8 ;eax = 10??? ret end start Выдаёт : Code: C:\MASM611\BIN>amake 1ll C:\MASM611\BIN>ml /c /coff "1ll.asm" Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: 1ll.asm C:\MASM611\BIN>link /SUBSYSTEM:CONSOLE "1ll.obj" Microsoft (R) Incremental Linker Version 6.00.8168 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : error LNK2001: unresolved external symbol _start 1ll.exe : fatal error LNK1120: 1 unresolved externals Код bat фаила : Code: ml /c /coff "%1.asm" link /SUBSYSTEM:CONSOLE "%1.obj" Вопрос : Что нетак , в чём проблемма ...???
lomerok Ты пытаешься программу под win32 откомпилмит 16 битным компайлером. Распространённая ошибка среди начинающих. Программа написана верно на 100%. Чтобы всё компайлелось нормально - нужно скачать MASM32 (http://www.masm32.com/) В твоём случае прошрамма должна быть такой: Code: cseg segment assume cs:cseg,ss:cseg,es:cseg,ds:cseg org 100h begin: mov eax, 8 add eax, 8 ;eax = 10??? int 20h cseg ends end begin компалеть вот так: Code: ML.EXE PROG.ASM /AT Параметр "/AT" указывает ассемблеру что после ассемблирования, в случае, если ошибок нет, следует запустить компоновщик (LINK.EXE) и передать ему параметры для создания файла типа COM. Параметр /AT вводится ЗАГЛАВНЫМИ буквами x0man Не стоит так говорить, если одни не помогают - это не значит что и все такие злые и корыстные. И если все форумы - это гомно, хуле вы сидите тогда в этом гомне? =\ фсадкороче =\
Уря я написал для курсача 2 проги уря) в итого для вычисления длины строки я юзал ээээ с десяток строк левого кода но вот есть такое: ReadStr StrHead mov al, StrHead+1 ReadStr- мой макрос для ввода строки, а вот дальше помешается в al строка +1, тоесть вроде как длина строки. Но вот вопрос как мне потом ей пользоваться, в ax она как бы и нехраниться и тп, карочи я немагу его занести в другие регистры, допустим командой такой: mov dx, al так нельзя, но можно так: mov dl, al почему нельзя 1 способом?=\ я непойму матиматику обьясните ктото шо тут за матиматика, обьясните как в каком формате там записана длина строки, в al и тд...?=(
To KindEcstasy: Вот что выдалось ...: Code: C:\MASM611\BIN>ML 1ll.asm /AT Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: 1ll.asm 1ll.asm(5): error A2085: instruction or register not accepted in current CPU mode 1ll.asm(6): error A2085: instruction or register not accepted in current CPU mode Устанавил masm32 , всё заработало .... Всем спасибо .... Особенно KindEcstasy...
Можно пожайлусто привести в пример исходник который читает содержимое из текстового файла и выводит его содержимое в мессадж боксе
ZET36 Я бы посоветовал начать с простого САМОУЧИТЕЛЯ Assembler. Книги можно взять тут -> forum.antichat.ru/thread31398.html
Подскажите кто-нибудь, где можно почитать про структуры данных Bios и Dos? И где можно узнать про состав, назачение и длину данных в Ms-dos