|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Member
Регистрация: 20.04.2014
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() ЗАДАНИЕ: Создать программу на языке Ассемблер, что позволяет с помощью цикла вывести массив, состоящий из единиц размером 5 * 5. заранее огромное спасибо всем за помощь!!! |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме уже встречались схожие проблемы, посмотрите Помогите с размером ФИ для сабвуфера Чайка, размером с индюка Assembler Операторы цикла на паскале |
![]() |
#2 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
![]()
Задача: Ввести двумерный массив размером 7 х 4. Найти наибольший элемент двумерного массива. Удалить строку с максимальным элементом.
Код:
Текст программы: .686 ; директива определения типа микропроцессора .model flat,stdcall ; задание линейной модели памяти option casemap:none ; отличие малых и больших букв include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\fpu.inc include \masm32\include\user32.inc include \masm32\include\msvcrt.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\msvcrt.lib includelib \masm32\lib\fpu.lib .data ; директива определения данные _c dd 28 sum dd 0 max dd 0 ; переменная для максимального числа frmt db "%d",0 buf db 30 dup(?) stdout DWORD ? stdin DWORD ? cRead dd ? temp dd ? mas1 dd 28 dup(0) nomer dd 0 st1 db "Vvesty masiv: " st2 db "Вывод результата удаления", 0 st3 db 10 dup(0) ifmt db "Удалена %d строка. Внимание!!! Проверьте правильность ввода, чтобы результат был правильным",0 .code ; директива начала кода программы _start: lea esi, mas1 ; загрузка адреса начала массива mov ecx,_c m1: mov ebx,ecx invoke GetStdHandle,STD_OUTPUT_HANDLE mov stdout,eax invoke GetStdHandle,STD_INPUT_HANDLE mov stdin,eax invoke WriteConsoleA,stdout,ADDR st1,14,NULL,NULL ; VIVOD ST1 invoke ReadConsole,stdin,ADDR buf,20,ADDR cRead,NULL ; чтения числа как символ invoke crt_atoi,ADDR buf ; преобразовать символ в число mov [esi],eax add esi,4 mov ecx,ebx loop m1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov ecx,_c lea esi, mas1 ; загрузка адреса начала массива mov eax [esi] ; загрузка числа m3: .IF(eax>max) ; условие mov max,eax add esi,4 ; расчет адреса нового числа mov eax[esi] loop m3 .ELSE ; иначе add esi,4 ; расчет адреса нового числа mov eax[esi] loop m3 ; перейти, если ecx не равен 0 .ENDIF ; окончание директивы высокого уровня ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov ecx,_c lea esi, mas1 ; загрузка адреса начала массива mov eax [esi] ; загрузка числа m4: .IF(eax == max) ; условие inc nomer add esi,4 ; расчет адреса нового числа mov eax[esi] jmp m5 loop m4 .ELSE ; иначе inc nomer add esi,4 ; расчет адреса нового числа mov eax[esi] loop m4 ; перейти, если ecx не равен 0 .ENDIF ; окончание директивы высокого уровня m5: .IF(nomer <= 7) ; условие mov ecx,7 x1: lea esi, mas1 ; загрузка адреса начала массива mov eax [esi] ; загрузка числа mov eax,0 add esi,4 loop x1 mov nomer,1 jmp end_prog .ENDIF .IF(nomer <=14) ; условие mov ecx,7 lea esi, mas1 ; загрузка адреса начала массива xx: add esi,4 loop xx mov ecx,7 x2: mov eax [esi] ; загрузка числа mov eax,0 add esi,4 loop x2 mov nomer,2 jmp end_prog .ENDIF .IF(nomer <=21) ; условие mov ecx,7 lea esi, mas1 ; загрузка адреса начала массива xx2: add esi,4 loop xx2 mov ecx,7 xx3: add esi,4 loop xx3 mov ecx,7 x3: mov eax [esi] ; загрузка числа mov eax,0 add esi,4 loop x3 mov nomer,3 jmp end_prog .ENDIF .IF(nomer <=28) ; условие mov ecx,7 lea esi, mas1 ; загрузка адреса начала массива xxx2: add esi,4 loop xxx2 mov ecx,7 xxx3: add esi,4 loop xxx3 mov ecx,7 xxx4: add esi,4 loop xxx4 mov ecx,7 x4: mov eax [esi] ; загрузка числа mov eax,0 add esi,4 loop x4 mov nomer,4 jmp end_prog .ENDIF end_prog: mov ebx,nomer invoke wsprintf \ ADDR st3 \ ADDR ifmt \ ebx invoke MessageBox \ NULL \ addr st3 \ addr st2 \ MB_OK invoke ExitProcess,0 ret end _start ; конец программы |
![]() |
![]() |
![]() |
#3 (permalink) |
Member
Регистрация: 20.04.2014
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
напишите, пожалуйста, так правильно?
вот код программы: Код:
format PE GUI 4.0 entry Start include 'win32a.inc' section '.text' code readable executable Start: mov ECX,2 ; цикл вывода массива Cikl: push ECX ; спрятать ибо... invoke MessageBox, NULL, _mass, _title,MB_OK pop ECX ; достать loop Cikl invoke ExitProcess,0 section '.data' data readable writeable _title TCHAR 'Маcсиф в цыкле', 0 _mass TCHAR '1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1',\ 0Ah,0Dh,'1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1', 0 section '.idata' import data readable writeable library kernel32, 'KERNEL32.DLL',\ user32, 'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' |
![]() |
![]() |
![]() |
#5 (permalink) |
Member
Регистрация: 20.04.2014
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
код программы:
Код:
include 'win32a.inc' section '.text' code readable executable Start: mov ECX,2 ; öèêë âûâîäà ìàññèâà Cikl: push ECX ; ñïðÿòàòü èáî... invoke MessageBox, NULL, _mass, _title,MB_OK pop ECX ; äîñòàòü loop Cikl invoke ExitProcess,0 section '.data' data readable writeable _title TCHAR 'Ìàcñèô â öûêëå', 0 _mass TCHAR '1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1',\ 0Ah,0Dh,'1 1 1 1 1',0Ah,0Dh,'1 1 1 1 1', 0 section '.idata' import data readable writeable library kernel32, 'KERNEL32.DLL',\ user32, 'USER32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' ![]() всем огромное спасибо!!! |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|