Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.mmonline.ru/forum/read/7/50196/
Дата изменения: Mon Apr 11 14:00:27 2016
Дата индексирования: Mon Apr 11 14:00:27 2016
Кодировка: Windows-1251
MMOnline | Форумы | Разное | Нужна помощь по Ассемблеру

Нужна помощь по Ассемблеру

Автор темы Masha 
01.02.2006 16:57
Нужна помощь по Ассемблеру
Вычислить заданное целочисленное выражение для исходных знаковых чисел: (2*C-D/2+1)/(A*A+7) Исходные данные и результат вычисления отобразить на экране монитора.

Вычислить заданное целочисленное выражение для исходных однобайтовых знаковых чисел: (2*C-D/4)/(A*A+1) Исходные данные и результат вычисления отобразить на экране монитора.

Заранее благодарю!
11.02.2006 01:52
asm
;(2*C-D/2+1)/(A*A+7) FASM 1.65.8
format PE console 4.0
include 'win32a.inc'

invoke GetStdHandle,STD_OUTPUT_HANDLE
jz exit
mov dword [hConsole],eax
invoke SetConsoleTitleA,string

movzx ax,byte [var1]
mov esi,buf1+8
call bintoascii

movzx ax,byte [var2]
mov esi,buf1+16
call bintoascii

movzx ax,byte [var3]
mov esi,buf1+24
call bintoascii

invoke WriteConsoleA,dword [hConsole],buf1,30,buf1,0

movzx cx,byte [var2]
movzx dx,byte [var3]

sal cx,1
sar dx,1

movzx eax,[var1]
sub cx,dx

imul eax
add eax,7

inc cx
xor edx,edx
xchg eax,ecx
idiv cx

mov esi,buf+08h
call bintoascii

invoke WriteConsoleA,dword [hConsole],buf,12,buf,0
invoke Sleep,2000
label exit
invoke NtTerminateProcess,-1,0
var1 db 40; A
var2 db -7; C
var3 db 30; D
hConsole dd ?
buf db 'result= ',' ',' ',' ',' '
buf1 db 'data A= ',' ',' ',' ',' ',' C= ',' ',' ',' ',' ',' D= ',' ',' ',' ',' '
string db '(2*C-D/2+1)/(A*A+7) FASM 1.65.8',0
proc bintoascii
push ecx
mov cl,al
and cl,10000000b
cmp cl,10000000b
je lessthanzero
xor ah,ah
mov cl,10
div cl
mov byte [esi+3],ah
xor ah,ah

div cl
mov byte [esi+2],ah
xor ah,ah

mov byte [esi+1],al
or dword [esi],30303000h
pop ecx
ret

label lessthanzero
xor ah,ah
neg al
mov cl,10
div cl
mov byte [esi+3],ah
xor ah,ah

div cl
mov byte [esi+2],ah
xor ah,ah

mov byte [esi+1],al
or dword [esi],3030302dh
pop ecx
ret
endp

data import
library ntdll,'ntdll.dll',\
kernel32,'kernel32.dll'
import ntdll,\
NtTerminateProcess,'NtTerminateProcess'
import kernel32,\
GetStdHandle,'GetStdHandle',\
WriteConsoleA,'WriteConsoleA',\
Sleep,'Sleep',\
SetConsoleTitleA,'SetConsoleTitleA'
end data

11.02.2006 02:16
asm
vmesto
buf1 db 'data A= ',' ',' ',' ',' ',' C= ',' ',' ',' ',' ',' D= ',' ',' ',' ','
nado
buf1 db 'data A= ',' ',' ',' ',' ',' C= ',' ',' ',' ',' ',' D= ',' ',' ',' ',' ,0dh,0ah

Извините, только зарегистрированные пользователи могут публиковать сообщения в этом форуме.

Кликните здесь, чтобы войти