Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.05.2012, 02:02   #1
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию Задача на MASM

помогите написать программу на языке Ассемблер, которая
должна позволять ввести с клавиатуры значения строк S1 и S2 произвольной одинаковой длины.
Переписать из строки S1 в строку S2 сначала все четные элементы, а затем нечетные ( перепись делать в начало строки S2).
Вывести на экран массивы S1, S2 до и после преобразований.
---------------------------------
Пример:
заполняем 1 поле ввода: 948521034
заполняем 2 поле ввода: 743920196
результат:
1 messagebox: 948521034
2 messagebox: 451398204743920196
sew960i вне форума
Старый 28.05.2012, 11:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, с таким подходом, Вам, имхо, в раздел Фриланс нужно..

а во-вторых, под какую ОС пишете код? вот это "1 messagebox... 2 messagebox" навевает мысли о том, что вы программируете оконное приложение под Win32, я прав?..
Serge_Bliznykov вне форума
Старый 29.05.2012, 19:47   #3
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

да нужно на win32
вон у меня есть готовое решение на fasm, но мне нужно на masm...
Код:
format PE Console 4.0
entry Start

include 'include\win32a.inc'

section '.text' code readable executable

Start:

  invoke GetStdHandle, [STD_OUTP_HNDL]
  mov [hStdOut], eax
  invoke GetStdHandle, [STD_INP_HNDL]
  mov [hStdIn], eax
  invoke CharToOemA, conTitle,conTitle
  invoke SetConsoleTitleA, conTitle
  test eax, eax
  jz Exit
  invoke CharToOemA, tr,tr
  invoke SetConsoleTextAttribute,[hStdOut],7
  invoke WriteConsoleA, [hStdOut], tr, trLen, chrsWritten, 0
  invoke CharToOemA, mes,mes
  invoke SetConsoleTextAttribute,[hStdOut],10
  invoke WriteConsoleA, [hStdOut], mes, mesLen, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, BufSize - 2, chrsRead, 0
  mov ecx,[chrsRead]
  sub ecx,2
  mov ebx,ecx
  mov esi,readBuf
  mov edi, str1
  rep movsb
  invoke WriteConsoleA, [hStdOut], mes2, mes2Len, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, BufSize2 - 2, chrsRead, 0
  mov ecx,[chrsRead]
  sub ecx,2
  cmp ebx,ecx
  jne .MErr
  push ecx
  mov esi,readBuf
  mov edi, str2
  rep movsb
  call myScript
  add ebx,ebx
  invoke WriteConsoleA, [hStdOut],Ext , ExtLen, chrsWritten, 0
  invoke SetConsoleTextAttribute,[hStdOut],14
  invoke WriteConsoleA, [hStdOut], str4, ebx, chrsWritten, 0
  ;invoke WriteConsoleA, [hStdOut], Ext, ExtLen, chrsWritten, 0
  invoke ReadConsoleA, [hStdIn], readBuf, BufSize2 - 2, chrsRead, 0
  jmp Exit
  .MErr:
  invoke MessageBoxA,0,Ermess,TitErr,0
Exit:
  invoke  ExitProcess, 0
;########### процедура обратботки сток ########################  
  proc myScript
  push esi edi edx
  mov esi,str1	
  mov edi,str4
  mov edx,str3
  .m1:
  mov ax,[esi]
  cmp eax,0
  je .m2
  mov [edx],al
  shr ax,8
  mov [edi],al
  add esi,2
  inc edi 
  inc edx
  jmp .m1
.m2: 
  mov edi,str4
.m3:
  mov al,[edi]
  inc edi
  cmp al,0
  jne .m3
  dec edi
  mov esi,str3
.m4:  
  mov al,[esi]
  cmp al,0
  je .m5
  mov [edi],al
  inc esi
  inc edi
  jmp .m4
.m5:  
  mov esi,str2	
.m6:
  mov al,[esi]
  cmp al,0
  je .m7
  mov [edi],al
  inc esi
  inc edi
  jmp .m6
.m7:  
  pop esi edi edx
  ret
  endp
section '.data' data readable writeable
  NULL = 0
  endl	EQU  0dh,0ah
  conTitle    db 'programm',0
  tr  db 'Задание: Разработать программную систему на языке Ассемблер, которая',endl
      db  'должна позволять ввести с клавиатуры значения строк S1 и S2',endl
      db  'произвольной, одинаковой  длины.',endl
      db  'Переписать из строки S1 в строку S2 сначала все четные,',endl 
      db  'а затем нечетные (перепись делать в начало строки S2).',endl
      db 'Вывести на экран массивы S1, S2 до и после преобразований.',0
  trLen = $-tr
  mes db endl,'Введите строку S1', endl
  mesLen = $-mes
  mes2 db endl,'Введите строку S2', endl
  mes2Len = $-mes2
  Ext db endl, "После преобразования строка S2 имеет такой вид:", endl
  ExtLen = $-Ext
  xx dd 0
  TitErr db "Ошибка",0
  Ermess db "Строки имеют разную длинну",0
  str1 db 80 dup 0
  str2 db 80 dup 0
  str3 db 80 dup 0
  str4 db 160 dup 0
  hStdIn      dd 0
  hStdOut     dd 0
  chrsRead    dd 0
  chrsWritten dd 0
  BufSize     = 80
  BufSize2     = 80
  STD_INP_HNDL	dd -10
  STD_OUTP_HNDL dd -11

section '.bss' readable writeable

  readBuf  db ?

section '.idata' import data readable

  library kernel, 'KERNEL32.DLL',\
	  user32, 'USER32.DLL'
  import kernel,\
    SetConsoleTitleA, 'SetConsoleTitleA',\
    GetStdHandle, 'GetStdHandle',\
    WriteConsoleA, 'WriteConsoleA',\
    ReadConsoleA, 'ReadConsoleA',\
    ExitProcess, 'ExitProcess',\
    SetConsoleTextAttribute, 'SetConsoleTextAttribute'	
  import user32,\ 
    CharToOemA,'CharToOemA',\
    MessageBoxA,'MessageBoxA'
sew960i вне форума
Старый 30.05.2012, 02:56   #4
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

уже не нужно. тему можно закрывать...
sew960i вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линкование в masm explosion14 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.12.2011 04:36
Задача(MASM) процессор intel8086 masterlomaster Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.03.2011 09:47
masm Serjuk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 02.02.2011 12:44
struct vs MASM format Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 09.05.2008 17:54