![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.11.2010
Сообщений: 5
|
![]()
Помогите решить задачку. Сам пробовал запутался в метках переметках.
Работаем на Тасме. Ввести элементы (слова отличные от нуля) матрицы 4х3. Вывести её на экран. (с помощью модуля Пильщикова) Создать одномерный массив mas1 следующим образом: первый элемент - это минимальный элемент из строки номер 0 матрицы, второй - максимальный из строки номер 1, третий - минимал из строки 2 и четвёртый - максимал из строки 3. Если в массиве mas1 отрицательные и положительные эл. чередуются (+,-,+,- или -,+,-,+), вывести mas1 на экран иначе очистить экран с помощью 21h и вывести соотв сообщение. Примечание: произведение равнознаковых чисел всегда отрицательно. Помогите пожалуйста ![]() |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.11.2010
Сообщений: 5
|
![]()
model tiny
.386 include io.asm .stack 100h .data Pr1 db 10, 13, 'Vvedite elementi matrici (slova krome 0)' db 10, 10, 13, 'razmer kotoroi = 4x3', '$' mes1 db 10,13, 'Poluchennaya matrica','$' ermsg db 7,10,13,'Error','$' mas1 dw ?, ?, ? dw ?, ?, ? dw ?, ?, ? dw ?, ?, ? mas2 dw 4 dup (?) st db 10, 13, '$' pr db 32, '$' flag db 0 flag2 db 0 .code start: mov ax,@data mov ds,ax mov DX, offset Pr1 ; Начальный Адрес Строки в DX mov AH, 9h int 21h NEWLINE xor BX, BX mov CX, 4 ; Строки = 4 (повторения внешнего цикла) Vvod_Vneshniy: push CX ; Начало Внешнего Цикла - Сохранение счетчика внешнего цикла в стеке mov CX, 3 ; Элементов строки = 4 (повторения внутреннего цикла) mov SI, 0 Vvod_Vnytrenniy: ININT mas1[BX][SI] ; ВВОД (через метод Пильщикова) cmp mas1[bx][si],0 je error add SI, 2 loop Vvod_Vnytrenniy ; Конец внутреннего цикла pop CX ; Взятие значения счетчика внешнего цикла из стека add BX, 6 ; На начало следующей строкки в матрице loop Vvod_Vneshniy ; Конец внешнего цикла ;-------------------------------------------------------------------------; mov BX, 0 mov CX, 4 ; Строки = 4 (повторения внешнего цикла) Vivod_Vneshniy: push CX ; Начало Внешнего Цикла - Сохранение счетчика внешнего цикла в стеке mov CX, 3 ; Элементов строки = 4 (повторения внутреннего цикла) mov SI, 0 ; ЭС'АЙ - обнуляем lea DX, st mov AH, 9 int 21h Vivod_Vnytrenniy: push bx push si OUTINT mas1[BX][SI] ; ВЫВОД pop si pop bx add SI, 2 mov AH, 2 mov DL, 9 int 21h loop Vivod_Vnytrenniy ; Конец внутреннего цикла pop CX ; Взятие значения счетчика внешнего цикла из стека add BX, 6 ; На начало следующей строкки в матрице loop Vivod_Vneshniy ; Конец внешнего цикла ;-------------------------------------------------------------------------; xor BX, BX mov CX, 4 xor dx,dx ; Строки = 4 (повторения внешнего цикла) xor di,di mov dx,2 Vneshniy: push CX ; Начало Внешнего Цикла - Сохранение счетчика внешнего цикла в стеке mov CX, 2 ; Элементов строки = 4 (повторения внутреннего цикла) mov SI, 2 Vnytrenniy: test flag,1b jnz min max: sub si,2 pop si mov ax,mas1[bx][si] test flag2,1b jz z1 n1: add si,4 xor flag2,1b jmp sravn1 z1: add si,2 xor flag2,1b sravn1: cmp mas1[bx][si],ax jl b1 mov ax,mas1[bx][si] mov mas2[di],ax jmp cont b1: mov mas2[di],ax sub si,4 xor flag2,1b push si add si,4 jmp cont min: sub si,2 pop si mov ax,mas1[bx][si] test flag2,1b jz z2 n2: add si,4 xor flag2,1b jmp sravn2 z2: add si,2 xor flag2,1b sravn2: cmp mas1[bx][si],ax jg m1 mov ax,mas1[bx][si] mov mas2[di],ax jmp cont m1: mov mas2[di],ax cont: add SI, 2 loop Vnytrenniy ; Конец внутреннего цикла pop CX ; Взятие значения счетчика внешнего цикла из стека add BX, 6 ; На начало следующей строкки в матрице add di, 2 xor flag,1b mov flag2,0 loop Vneshniy ; Конец внешнего цикла ;-------------------------------------------------------------------------; ;---------------------------------------------------------------------------; NEWLINE lea DX, mes1 mov AH, 9 int 21h NEWLINE mov BX, 0 mov CX, 4 ; Строки = 4 (повторения внешнего цикла) mov DI, 0 Vivod: OUTINT mas2[DI] ; ВЫВОД add DI, 2 lea DX, pr mov AH, 9 int 21h mov AH, 2 mov DL, 9 int 21h loop Vivod ; Конец внешнего цикла jmp konec error: lea DX,ermsg mov AH, 9 int 21h konec: mov ah,1 int 21h mov ax,4C00h int 21h end start не находит макс и мин элементы корректно. со второй часть я разберусь. мне б только с самим формированием mas1 |
![]() |
![]() |
![]() |
#4 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
GM402 а где я должен взять описание функций OUTINT и ININT? из файла io.asm? Ну так и прикрепил бы его через вложение файлов
А это что за бред? Цитата:
(+)х(+)=(+) (-)х(-)=(+), а во-вторых в задании нет ничего о перемножении элементов матрицы |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 27.11.2010
Сообщений: 5
|
![]()
...
mas1 dw ?, ?, ? dw ?, ?, ? dw ?, ?, ? dw ?, ?, ? mas2 dw 4 dup (?) flag db 0 flag2 db 0 ... xor BX, BX mov CX, 4 xor dx,dx ; Строки = 4 (повторения внешнего цикла) xor di,di mov dx,2 Vneshniy: push CX ; Начало Внешнего Цикла - Сохранение счетчика внешнего цикла в стеке mov CX, 2 ; Элементов строки = 4 (повторения внутреннего цикла) mov SI, 2 Vnytrenniy: test flag,1b jnz min max: sub si,2 pop si mov ax,mas1[bx][si] test flag2,1b jz z1 n1: add si,4 xor flag2,1b jmp sravn1 z1: add si,2 xor flag2,1b sravn1: cmp mas1[bx][si],ax jl b1 mov ax,mas1[bx][si] mov mas2[di],ax jmp cont b1: mov mas2[di],ax sub si,4 xor flag2,1b push si add si,4 jmp cont min: sub si,2 pop si mov ax,mas1[bx][si] test flag2,1b jz z2 n2: add si,4 xor flag2,1b jmp sravn2 z2: add si,2 xor flag2,1b sravn2: cmp mas1[bx][si],ax jg m1 mov ax,mas1[bx][si] mov mas2[di],ax jmp cont m1: mov mas2[di],ax cont: add SI, 2 loop Vnytrenniy ; Конец внутреннего цикла pop CX ; Взятие значения счетчика внешнего цикла из стека add BX, 6 ; На начало следующей строкки в матрице add di, 2 xor flag,1b mov flag2,0 loop Vneshniy ; Конец внешнего цикла ... Создать одномерный массив mas2 следующим образом: первый элемент - это минимальный элемент из строки номер 0 матрицы, второй - максимальный из строки номер 1, третий - минимал из строки 2 и четвёртый - максимал из строки 3. Вот что у меня не получается нифига. Остальное знаю |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с матрицей | AleksENN | Помощь студентам | 0 | 23.10.2010 14:13 |
работа с матрицей | RanMa | Помощь студентам | 6 | 12.03.2010 17:05 |
Работа с матрицей | JeyKip | Общие вопросы C/C++ | 4 | 25.10.2009 22:47 |
Работа с матрицей | Absent | Помощь студентам | 1 | 24.05.2008 13:33 |
Работа с матрицей | Absent | Помощь студентам | 3 | 17.05.2008 22:20 |