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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2018, 18:34   #1
Vllladek
Новичок
Джуниор
 
Регистрация: 09.06.2018
Сообщений: 0
Печаль [Assembler] Нужно написать несложную программу (за небольшое денежное спасибо от меня) на экзамен с комментариями

Задание вот:

3. Найти первый (последний) максимальный(минимальный) элемент двухмерного массива и указать его местоположение:
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.

Суть в том, что и для буквы (а) и для буквы (б) у меня есть код, под (а) он нормальный и работает корректно(я их приложу внизу), а под (б) возможно работает нормально только с однозначными числами. Нужно написать подробные комментарии где их нет к первому коду и переписать второй, а если второй корректно работает с двухзначными числами, то просто тоже подробные комментарии к нему, где их нет. Писать код нужно на emu8086, что бы у меня всё сразу заработало и вам не возится со мной.

Решить нужно либо сегодня до скольки угодно, либо до завтра до 9-10 утра. Кто согласен и готов мне помочь напишите в лс и в конце я кину вам 150 рублей куда вам больше угодно. Просто очень важно!!!

Код:
Код для буквы а:
TITLE MASS
STACK	SEGMENT PARA STACK 'STACK'
		DB   64   DUP('STACK ')    
STACK	ENDS
DSEG SEGMENT PARA PUBLIC 'DATA'
Mas	db	1,0,4,1   ; 4x4 
 	db	5,1,7,2   
	db        4,2,6,5    
	db        2,1,7,8	  
Len_mas equ 4     ; Длина двумерного массива
Mes1 db 0ah,0dh,'Maximalnyi element massiva = $'
Mes2 db 0ah,0dh,'Adress max elementa massiva = $'
Mes3 db 0ah,0dh,'Minimalnyi element massiva = $'
Mes4 db 0ah,0dh,'Adress min elementa massiva = $'	
Max db ?   ; Максимальный элемент матрицы 
Min db ?   ; Минимальный элемент матрицы
I dw ?     ; Номер строки для максимального элемента
J dw ?     ; Номер столбца для максимального элемента
I2 dw ?    ; Номер строки для минимального элемента
J2 dw ?    ; Номер столбца для минимального элемента
DSEG ENDS
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG, DS:DSEG, SS:STACK 

START PROC FAR
PUSH DS      ;Помещаем DS в стек  
SUB AX,AX    ;Производим вычитание
PUSH AX      ;Помещаем AX в стек
MOV AX,DSEG  ;Присваиваем DSEG значение в регистре АХ
MOV DS,AX    ;Присваем АХ значение в DS
XOR AX,AX    ;Исключающие ИЛИ 
XOR DI,DI    
MOV CX,4     ;В регистр СХ помещаем значение 4
LEA BX,Mas   ; Загружаем исполнительный адресс в ВХ
MOV DL,byte ptr [BX] ;Записываем байт на который указывает регистр ВХ в регистр DL  
MOV DH,byte ptr [BX]

CYC1: PUSH CX  ; Помещаем СХ в стек
XOR SI,SI      
MOV CX,Len_mas  ;Присваем длину матрицы в регистр СХ
INC DI ;Увеличение значения на единицу    

CYC3: CMP byte ptr [BX+SI],DH  ; Цикл для поиска минимального элемента
JA CYC2 
MOV DH, BYTE ptr [BX+SI]
MOV Min,DH
MOV I2,DI
MOV J2,SI

CYC2: CMP byte ptr [BX+SI],DL ; Сравниваем значение в регистре DL со значением байта на который указывает BX+SI
JB NOT_MAX ;Переход в NOT_MAX если значение ниже
MOV DL,BYTE ptr [BX+SI] ; Присваем значение байта на который указывает BX+SI в регистр DL
MOV Max,DL   ; Присваем Max значение регистра DL
MOV I,DI;  ; Номеру строки присваем значение из регистра DI
MOV J,SI   ; Номеру столбца присваиваем значение из регистра SI

NOT_MAX:
INC SI ;Увеличиваем значение регистра SI на 1
LOOP CYC3 ;Повторение цикла до конца cчетчика 
POP CX   ;Извлекаем значение регистра CX из стека
ADD BX, Len_mas ; Складываем ВХ с Длиной матрицы и записываем значение в BX
LOOP CYC1 ;Повторение цикла до конца счетчика

XOR DX,DX  
MOV AH,09H  
MOV DX,OFFSET Mes1 ;Присваиваем строку Mes1 в регистр СХ
INT 21h ; Выводим на экран
MOV AH,02H
MOV DL,Max ; Присваиваем значение Max в регистр DL
ADD DL,30h ; Складываем
INT 21h  ; Выводим на экран

MOV AH,09H
MOV DX,OFFSET Mes3 ;Выводим на экран Mes3
INT 21h 
MOV AH,02H
MOV DH,Min ;Присваиваем  Min значение регистру DH
MOV DL,DH
ADD DL,30h   ;Выводим на экран минимальное значение
INT 21h

MOV AH,09H
MOV DX,OFFSET Mes2 ;Присваиваем строку Mes2 в регистр DX
INT 21h  ;Выводим на экран
MOV AH,02H
MOV DX,I ; Номер строки присваем в регистр DX
ADD DX,30h
INT 21h  ;Выводим на экран  
MOV AH,02H    ; Выводим запятую
MOV DL,02Ch
INT 21h
MOV AH,02H
INC J ; Увеличиваем значение столбца на 1
MOV DX,J ;Записываем значение J в регистр DX 
ADD DX,30h
INT 21h ; Выводим на экран

MOV AH,09H
MOV DX,OFFSET Mes4 ;Выводим на экран Mes4
INT 21h
MOV AH,02H
MOV DX,I2 
ADD DX,30h ;Выводим на экран номер строки мин. значения
INT 21h 
MOV AH,02H    ; Выводим запятую
MOV DL,02Ch
INT 21h
MOV AH,02H
INC J2
MOV DX,J2
ADD DX,30h ; Выводим на экран номер столбца мин.значения
INT 21h

EXIT: RET
START ENDP  ; ЗАВЕРШАЕМ ПРОГРАММУ
CSEG ENDS
END START
Пожалуйста, оформляйте Ваш код согласно правилам.
Код для буквы б прикреплю во вложения:
Вложения
Тип файла: txt код2.txt (3.5 Кб, 167 просмотров)

Последний раз редактировалось Вадим Мошев; 09.06.2018 в 19:25.
Vllladek вне форума Ответить с цитированием
Старый 09.06.2018, 19:27   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Vllladek, обращайтесь e-mail: informatik101@mail.ru vk.com/alexcoder1
Дороже. Чтобы не возиться, проще будет написать заново.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Товарищи, нужна ваша помощь, написать программу в Паскале. Завтра защита курсовой, очень срочно нужно. Заранее спасибо. Daniil Sergeevich Паскаль, Turbo Pascal, PascalABC.NET 1 27.05.2015 22:10
Здравствуйте. Нужно написать программу в с++. Заранее спасибо. ekaterin Помощь студентам 1 14.05.2012 21:08
у меня завтра экзамен мне надо решить три задачи,но я не могу написать программу,я на вас надеюсь desu_desu Помощь студентам 2 20.12.2011 21:53
Нужно написать простенькую программку. За денежное вознагрождение. vos001 Фриланс 5 14.03.2009 22:01