Переделать с nasm на masm
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Переделать с 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
|
|
|
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
|
|
|
RE: Переделать с nasm на masm - 2009-01-05 12:04:48.100000
|
|
|
kolPeeX
Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
|
UP
|
|
|
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 ;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,word ptr ds:[result1]
ret
end start
Так вот вроде
|
|
|
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:
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
end start
Прогони все под отладчиком, проверь
|
|
|
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 и переделать, но сейчас остальными лабами занят :(
|
|
|
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 файла
|
|
|
RE: Переделать с nasm на masm - 2009-01-05 14:30:59.583333
|
|
|
kolPeeX
Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
|
quote:
ORIGINAL: spikky скомпилить с соответствующими ключами для получения com файла И здесь тоже подскажите :)
|
|
|
|
|