Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 21.11.2020
Сообщений: 48
1

Вывести из массива 4х5 только последний столбец

21.01.2023, 14:22. Показов 932. Ответов 8

Author24 — интернет-сервис помощи студентам
Написать com-программу, которая позволит ввести двухмерный массив 4х5. И вывести из него
только последний столбец
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2023, 14:22
Ответы с готовыми решениями:

Вывести из массива 4х5 только два первых столбика
Нужно написать com-программу, которая позволит вывести из массива 4х5 только два первых столбика. ...

Ввести двумерный массив 4х5. И вывести из него только последний столбец
Написать exe-программу, которая позволит ввести двумерный массив 4х5. И вывести из него только...

Как заполнить только(!) последний столбец двумерного массива - матрицы?
Добрый день! Я не понимаю, почему при заполнении последнего столбца матрицы выдается ошибка....

Поменять местами столбец с минимальным элементом и последний столбец массива
В массиве необходимо найти номер столбца с минимальным элементом по модулю. Поменять местами...

8
5 / 5 / 1
Регистрация: 28.01.2023
Сообщений: 9
28.01.2023, 23:33 2
Цитата Сообщение от TheChumak Посмотреть сообщение
Написать com-программу, которая позволит ввести двухмерный массив 4х5. И вывести из него
только последний столбец
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
.model  tiny
.286
code    segment
org 100h
 
start:
 
;Пользовательский ввод массива из 20 символов
 
    mov ah, 0Ah
    mov dx, offset array
    int 21h
 
;Установка смещения на последнее число первой строки матрицы
;и копирование его в индексный регистр для обращения к памяти.
 
    add dx, 5d
    mov si, dx
 
;Установка количества строк в матрице
;и смещения области памяти для записи в неё последнего столбца матрицы.
 
    mov cl, 5d
    mov di, offset outstr   
 
;Запись последнего столбца матрицы в отдельный массив
 
write:
 
    mov al, byte ptr[si]
    mov byte ptr[di+1], al
    add si, 4d
    inc di
    loop write          
 
;Вывод на экран
    
    mov ah, 9d
    mov dx, offset outstr
    int 21h
 
;Завершение программы
 
    mov ax, 4C00h
    int 21h
 
array       db  21d, 22d dup(0)
outstr      db  0Ah, 6d dup(24h)
 
code    ends
end start
Также приложил архив с исходником и com программой.
Вложения
Тип файла: zip matrix.com.zip (838 байт, 6 просмотров)
2
1 / 1 / 0
Регистрация: 21.11.2020
Сообщений: 48
31.01.2023, 01:09  [ТС] 3
Этот код не работает как нужно...
0
5 / 5 / 1
Регистрация: 28.01.2023
Сообщений: 9
31.01.2023, 08:50 4
TheChumak, тогда уточните ТЗ, так как я написал программу исходя строго из описанной вами задачи.
0
5 / 5 / 1
Регистрация: 28.01.2023
Сообщений: 9
31.01.2023, 13:31 5
TheChumak, уточните пожалуйста размер вводимых данных в массив, куда должен производиться вывод(экран, другой массив, файл, и т. д. ) , я попробую вам помочь
0
1 / 1 / 0
Регистрация: 21.11.2020
Сообщений: 48
31.01.2023, 18:45  [ТС] 6
Спасибо вам огромное, что уделяете своё время. Нужно написать com-программу, которая позволит ввести(вводить можно любым удобным для вас методом, но главное, что бы массив был из чисел) двухмерный массив 4х5. И вывести из него только последний столбец (на экран вертикально в виде столбца)

Добавлено через 6 минут
Еще одна просьба, что бы массив был в виде матрицы. Еще раз огромное спасибо
0
5 / 5 / 1
Регистрация: 28.01.2023
Сообщений: 9
31.01.2023, 21:38 7
TheChumak, уточните пожалуйста, какой размер вводимых данных необходим(8 бит, 16 бит, 32 бита...)?
0
1 / 1 / 0
Регистрация: 21.11.2020
Сообщений: 48
31.01.2023, 23:34  [ТС] 8
16 бит
0
5 / 5 / 1
Регистрация: 28.01.2023
Сообщений: 9
02.02.2023, 00:16 9
Лучший ответ Сообщение было отмечено TheChumak как решение

Решение

TheChumak, Ввод осуществляется в десятичной системе счисления (размер входных данных 16 бит).
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
.model  tiny
.286
code    segment
org     100h
 
 
start:
 
;Запись смещения массива в индексный регистр
;для последующей работы с этой областью памяти.
 
    mov di, offset matrix
 
;Пользователь вводит 20 чисел с клавиатуры
;в десятичной системе счисления.
 
    mov cx, 20d
 
usrin:
 
    push di
    call invar  
    add di, 2d
    loop usrin
 
;Перенос строки.
 
    mov ah, 2d
    mov dl, 0Ah
    int 21h
 
;Установка смещения в индексном регистре на последнее число
;первой строки матрицы.
 
    mov di, offset matrix
    add di, 6d  
 
;Вывод сообщения для пользователя.
 
    mov ah, 9d
    mov dx, offset mes
    int 21h
    
;Вывод последнего столбца матрицы на экран.
 
    mov cx, 5d
    mov dx, offset return
    
outdisp:
 
    
    push word ptr[di]
    call outvar
    int 21h
    add di, 8d
    loop outdisp
 
    mov ax, 4C00h
    int 21h
 
matrix      dw  4d dup(0)
        dw  4d dup(0)
                dw  4d dup(0)
        dw  4d dup(0)
        dw  4d dup(0)
 
return      db  0Ah, 0Dh, 24h
mes     db  'Последний столбец матрицы:', 0Ah, 0Dh, 24h
 
;Процедура ввода числа в переменную.
;Параметры (передача через стек):
;- смещение переменной
;Выход:
;- Число, записанное в переменную.
 
invar   proc    uses ax bx dx cx bp si di
 
    mov bp, sp
    xor cx, cx
 
;Копирование смещения переменной в индексный регистр
;для последующей работы с этой областью памяти.
 
    mov di, word ptr ss:[bp+16] 
 
;Пользовательский ввод числа до 65535d
 
    mov ah, 0Ah
    mov dx, offset buff
    int 21h
 
;Установка смещения на последний символ массива
;и установка значения регистра-счётчика
;для определения кол-ва чисел в массиве.
    
    mov si, dx
    mov cl, byte ptr[si+1]
    add si, cx
    inc si  
    
;Установка значения множителя разряда  
 
    mov bx, 1d
        
;Преобразование кодов ASCII в число
            
translate:
        
    xor ax, ax
    mov al, byte ptr[si]
    sub al, 30h
    mul bx  
    add word ptr[di], ax
    mov ax, factor
    mul bx
    mov bx, ax
    dec si
    loop translate
    
    ret 2
 
buff    db  6d, 7d dup(0)   
factor  equ 10d
 
invar   endp
 
;Процедура вывода на экран значения переменной.
;Входные параметры(передача через стек):
;- число (не более 65535)
;Выход:
;- число в десятичной системе счисления на экране
 
 
outvar      proc    uses ax bx dx bp di cx
 
    mov bp, sp
    xor dx, dx
 
;Установка делителя в регистр BX.  
 
    mov bx, 10d
 
;Запись смещения последнего числа массива
;в индексный регистр для последующей
;работы с этой областью памяти.
 
    mov di, offset outmas+4
 
;Запись смещения массива для последующей
;работы с ним.    
 
    mov si, offset outmas
    
;Запись преобразуемого числа в регистр АХ.
    
    mov ax, word ptr ss:[bp+14]
    cmp ax, 0
    je zero
    
;Преобразование числа в коды ASCII.
    
trans:
        
    cmp ax, 0
    je delzero      
    
    div bx
    add dl, 30h
    mov byte ptr[di], dl
    xor dx, dx
    dec di
    jmp trans   
 
;Удаление нулей в начале массива(если они есть).
 
 
delzero:
        
    cmp byte ptr[si], 0
    je delz
    jmp exitp
        
delz:
     
    inc di
    cmp byte ptr[di], 24h
    je exitp
    mov al, byte ptr[di]
    mov byte ptr[di], 24h
    mov byte ptr[si], al
    inc si
    jmp delzero
 
zero:
 
    mov byte ptr[di-4], 30h
 
exitp:
    
    mov ah, 9d
    mov dx, offset outmas
    int 21h
 
    mov cx, 5d
    mov di, dx
 
;Очистка массива после использования.
 
masz:
    
    mov byte ptr[di], 0
    inc di
    loop masz       
 
    ret 2
 
outmas  db  5d dup(0), 24h
 
outvar      endp
 
code    ends
end     start
2
02.02.2023, 00:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2023, 00:16
Помогаю со студенческими работами здесь

Выводит только почему-то последний столбец
Код кнопка button с базы данных в c# windows forms с кнопками combobox и textbox Выводит только...

Excel: данные записываются только в последний столбец
Set TestWorkbook = Workbooks.Open(FileName:=NewFileName) Worksheets("Лист1").Select For j = 1 To...

Вывести все элементы массива, абсолютные значения которых меньше 1 (выводится только последний элемент)
задание Вывести все элементы массива, абсолютные значения которых меньше 1. получился такой код:...

Удалить последний столбец матрицы, содержащий только отрицательные элементы, и продублировать первый столбец, содержащий положительные элементы
Дана матрица размера M x N. Удалить ее последний столбец, содержащий только отрицательные элементы,...

Удалить последний столбец матрицы содержащий только отрицательные элементы
10)Дана матрица размера M × N. Удалить ее последний столбец, содержащий только отрицательные...

Удалить последний столбец матрицы, содержащий только отрицательные элементы
Дана матрица размера M ´ N. Удалить ее последний столбец, содержащий только отрицательные элементы....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru