С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
1

Прога для NASM (Linux)

22.06.2010, 08:59. Показов 3390. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят в общем такая проблема... До конца июня нужно сдать лабу по асму (первый курс).. Времени сейчас с ним разбираться уже нет((( Код мне написал старший друг, но досада.. Писал он под TASM, а у меня Linux и хотел я писать в NASM((( Переходить под винду не кайф((( Есть ли вариант этот код адаптировать под NASM? Или кто сможет помочь с написанием под NASM...
Код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
data segment
b db 1,2,3,4,5,6,7,8,9,10
sum dw ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea bx,b
xor cx,cx
mov cl,10
xor ax,ax
cik:
mov al,[bx]
test al,1b
jnz nech
add sum,ax
nech:
inc bx
loop cik
mov ax,4c00h
int 21h
code ends
end start
ЗАДАНИЕ: Определить сумму эл. массива В(100) значения которых четные

Заранее всем спасибо))

Добавлено через 12 часов 44 минуты
Неужели никто никогда не писал под NASM?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2010, 08:59
Ответы с готовыми решениями:

Команда NOT, nasm, linux x86_64
Не понятен результат исполнения команды not в следующем коде global _start section .text...

[NASM] [Linux] Переименование Mp3 тегов
Кто может помочь написать данную программу?

Исправление ошибки при решении примера (linux nasm)
Привет, Всем) Не могли бы, Вы исправить ошибку в коде nasm (linux) Пример : ((a1+a2)*a3/a4+a5)...

Как вывести значение в консоль linux (ubuntu) на nasm
как быть? тут на сайте есть куча литературы но она вся для винды( MASM, TASM ) а для NASM нету(...

11
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
22.06.2010, 12:08 2
Oбязательно NASM? Фасм тоже может создать ELF'ов.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
format ELF executable
entry start
 
segment readable executable
 
start: 
lea bx,[b]
xor cx,cx
mov cl,10
xor ax,ax
cik:
mov al,[bx]
test al,1b
jnz nech
add sum,ax
nech:
inc bx
loop cik
 
mov eax,1
xor ebx,ebx
int 0x80
 
segment readable writeable
b db 1,2,3,4,5,6,7,8,9,10
sum dw ?
Не проверял.
1
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
22.06.2010, 15:32  [ТС] 3
Спасибо большое)
Щас буду проверять))

Добавлено через 51 минуту
ошибочки все же есть(((

/home/bvs-studio/prog01.asm [15]:
add sum,ax
error: invalid operand.
0
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
22.06.2010, 16:17 4
add [sum],ax
1
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
22.06.2010, 18:39  [ТС] 5
bvs-studio@bvs-desktop:~$ ld -o prog01 /home/bvs-studio/prog01.o
ld: warning: cannot find entry symbol _start; not setting start address




bvs-studio@bvs-desktop:~$ /home/bvs-studio/prog01
bash: /home/bvs-studio/prog01: не могу запустить бинарный файл

Еще можно немножко помочь?)
0
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
22.06.2010, 19:51 6
Если надо компилировать в obj текст немного меняется.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
format ELF
 
section '.text' executable
 
 public _start
 _start:
lea bx,[b]
xor cx,cx
mov cl,10
xor ax,ax
cik:
mov al,[bx]
test al,1b
jnz nech
add [sum],ax
nech:
inc bx
loop cik
 
    mov eax,1
    xor ebx,ebx
    int 0x80
 
section '.data' writeable
b db 1,2,3,4,5,6,7,8,9,10
sum dw ?
Это компилится командами:
fasm prog01.asm prog01.o
ld prog01.o -o prog01

Но по сути первый код лучше. Он комплился одной командой.
fasm prog01.asm prog01
1
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
22.06.2010, 20:10  [ТС] 7
bvs-studio@bvs-desktop:~$ /home/bvs-studio/prog01
Segmentation fault

Выдает в обоих случаях запуска исполняемого файла(((
Компилится в обоих норм)


bvs-studio@bvs-desktop:~$ /home/bvs-studio/desktop/fasm/fasm /home/bvs-studio/prog01.asm prog01
flat assembler version 1.69.14 (16384 kilobytes memory)
3 passes, 168 bytes.
0
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
22.06.2010, 20:50 8
Нуу... С такой ошибкой я не справлюсь без линукса. А его у меня нет.
Попробуй
chmod +x filename
Может поможет. Нашел на сайте фасма.

И попробуй скомпилировать примеры, которые идут с фасмом.
1
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
22.06.2010, 21:01  [ТС] 9
ОК) Буду пытаться)))
Спасибо за помощь;-)
Может еще обращусь)
0
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
24.06.2010, 01:47  [ТС] 10
ну в общем вот такой пример отлично компилится в одну строчку


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
format ELF executable 3
entry start
 
segment readable executable
 
start:
 
    mov eax,4
    mov ebx,1
    mov ecx,msg
    mov edx,msg_size
    int 0x80
 
    mov eax,1
    xor ebx,ebx
    int 0x80
 
segment readable writeable
 
msg db 'Hello world!',0xA
msg_size = $-msg


root@bvs-desktop:/home/bvs-studio# /home/bvs-studio/asm/test
Hello world!
0
1 / 1 / 0
Регистрация: 15.12.2009
Сообщений: 18
26.06.2010, 10:44  [ТС] 11
Вобщем намучался я с ФАСМом и НАСМом и решил (т.к. времени уже нет) попробовать ТАСМом....
Запустил я его под линем в досбоксе.... Оттранслировал, начал компилить и вот что пишет
Warning: No stackd

При этом ехе файл все же компилится, но при его запуске ничего не происходит(((
Вот код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
data segment
b db 1,2,3,4,5,6,7,8,9,10
sum dw ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea bx,b
xor cx,cx
mov cl,10
xor ax,ax
cik:
mov al,[bx]
test al,1b
jnz nech
add sum,ax
nech:
inc bx
loop cik
mov ax,4c00h
int 21h
code ends
end start
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
26.06.2010, 19:00 12
а что ты хотел увидеть, ведь на экран ниче не выводится)) в результате в переменной sum будет сумма четных - результат смотри в отладчике
0
26.06.2010, 19:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2010, 19:00
Помогаю со студенческими работами здесь

NASM - передать имя файла для инклюда как макрос из командной строки
Привет! Достался мне в наследство код, написанный на nasm'е. Для компиляции используется такая...

Скажите почему прога зависает. Не пойму. Прога имитирует входной потол: пользователь вводит предложение которое сохраняется в буфер.
STAK SEGMENT STACK db 256 dup(?) STAK ENDS DATA SEGMENT buf db 256d dup(?) ; nash bufer...

[NASM] Ошибка "nasm error more than one input file specified type"
Начал изучать ассемблер сделал все как в методичке и зашел в тупик значит скачал я от сюда инстал...

IDE для работы с NASM
Помогите пожалуйста найти нормальную среду для написания и компилирования программ, написанных на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru