Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Переделать с nasm на masm

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Переделать с nasm на masm
Имя
Сообщение << Старые топики   Новые топики >>
Переделать с nasm на masm - 2009-01-05 10:47:28.960000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
Помогите переделать лабу с nasm на masm.
Писал на nasm'е, но товарищу нужен masm. Самому конвертить не получается - masm не юзаю (неправильный он).

Вот первая:
org 100h mov bx,[a+2] ;второй элемент cmp bx,[a+2*2] jne _else_1 mov ax,4 jmp _endif_1 _else_1: mov ax,3 _endif_1: cmp bx,[a] ;сравниваем первый со вторым je _endif_2 xor ax,7 dec ax dec ax _endif_2: ret ;data a: dw 2,1,1,1
Post #: 1
RE: Переделать с nasm на masm - 2009-01-05 10:50:09.923333   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
Третья:
;переполнения при умножении не учитываются org 100h jmp start ;data n: db 3 one: db -1 two: dw -2 result1: db 0 start: ;вычисляем ряд {En}((-1)^n)*n^3 mov cl,[n] _loop1: mov al,[n] imul cl imul cl imul cl add ax,[result1] mov result1,ax neg n dec cl cmp cl,0 jne _loop1 ;вычисление по формуле ;(1-6n^2-4n^3) = 1-2n^2(3+2n) mov cl,[n] ;cl=n mov al,2 ;al=2 mul cl ;ax=2n add ax,3 ;ax=3+2n xor ch,ch ;ch=0,cx=cl mul cx ;ax=n(3+2n) mul cx ;ax=n^2(3+2n) imul two ;ax=-2n^2(3+2n) inc ax ;ax=1-2n^2(3+2n) mov dx,8 imul dx ;ответ по формуле в ax ;а у ряда в bx mov bx,[result1] ret
Post #: 2
RE: Переделать с nasm на masm - 2009-01-05 12:04:48.100000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
UP
Post #: 3
RE: Переделать с nasm на masm - 2009-01-05 12:21:05.460000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
.586 .model flat, stdcall ; модель памяти - flat option casemap :none include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\kernel32.lib ; Секция данных .data n db 3 one db -1 two dw -2 result1 db 0 ; секция кода .code start: ;вычисляем ряд {En}((-1)^n)*n^3 mov cl,[n] _loop1: mov al,[n] imul cl imul cl imul cl add ax,word ptr ds:[result1] mov word ptr ds:[result1],ax neg n dec cl cmp cl,0 jne _loop1 ;вычисление по формуле (1-6n^2-4n^3) = 1-2n^2(3+2n) mov cl,[n] ;cl=n mov al,2&nbsp;&nbsp; ;al=2 mul cl&nbsp;&nbsp;&nbsp;&nbsp; ;ax=2n add ax,3&nbsp;&nbsp; ;ax=3+2n xor ch,ch&nbsp; ;ch=0,cx=cl mul cx&nbsp;&nbsp;&nbsp;&nbsp; ;ax=n(3+2n) mul cx&nbsp;&nbsp;&nbsp;&nbsp; ;ax=n^2(3+2n) imul two&nbsp;&nbsp; ;ax=-2n^2(3+2n) inc ax&nbsp;&nbsp;&nbsp;&nbsp; ;ax=1-2n^2(3+2n) mov dx,8 imul dx &nbsp;&nbsp;&nbsp; ;ответ по формуле в ax &nbsp;&nbsp;&nbsp; ;а у ряда в bx mov bx,word ptr ds:[result1] &nbsp;&nbsp;&nbsp; ret end start
Так вот вроде
Post #: 4
RE: Переделать с nasm на masm - 2009-01-05 12:29:24.660000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
.586 .model flat, stdcall ; модель памяти - flat option casemap :none include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\kernel32.lib ; Секция данных .data a dw 2,1,1,1 ; секция кода .code start: &nbsp;&nbsp;&nbsp; mov bx,[a+2] ;второй элемент &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cmp bx,[a+2*2] &nbsp;&nbsp;&nbsp; jne _else_1 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mov ax,4 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; jmp _endif_1 &nbsp;&nbsp;&nbsp; _else_1: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mov ax,3 &nbsp;&nbsp;&nbsp; _endif_1: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cmp bx,[a] ;сравниваем первый со вторым &nbsp;&nbsp;&nbsp; je _endif_2 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xor ax,7 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dec ax &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dec ax &nbsp;&nbsp;&nbsp; _endif_2: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ret end start

Прогони все под отладчиком, проверь
Post #: 5
RE: Переделать с nasm на masm - 2009-01-05 13:07:05.423333   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
Спасибо, конечно. Но нужны com-файлы. Там типа "CSEG segment", "DSEG ENDS", "org 100h" и тому подобное.
Да и в masm'е, наскольку помню, работа с памятью наоборот. (imul two == imul offset two, как-то так, точно не знаю).
Мог бы и сам я почитать про masm и переделать, но сейчас остальными лабами занят :(
Post #: 6
RE: Переделать с nasm на masm - 2009-01-05 14:21:12.833333   
spikky

Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
quote:

Там типа "CSEG segment", "DSEG ENDS", "org 100h" и тому подобное.

Flint_ta использовал директивы определения сегментов: .data .code.
.code - тоже самое что _text segment word public 'code'
Так что можешь просто заменить это, добавить в начало org 100h и скомпилить с соответствующими ключами для получения com файла
Post #: 7
RE: Переделать с nasm на masm - 2009-01-05 14:30:59.583333   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
quote:

ORIGINAL: spikky

скомпилить с соответствующими ключами для получения com файла


И здесь тоже подскажите :)
Post #: 8
Страниц:  [1]
Все форумы >> [Прочее] >> Переделать с nasm на masm







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.