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

Задача со структурами

03.10.2016, 21:04. Показов 410. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не выходит сделать задание с структурами. Необходимо вводить поля структуры для каждого объекта, для того что бы остановить ввод нужно нажать 'n' в соответствующем запросе. Скорей всего ошибка кроется в определение структуры (в массивах полей) либо в самом вводе выводе.

Компилировал так
tasm /zi lr3.asm
tlink /v lr3

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
ASSUME CS: CODE_SEG, DS: DATA_SEG
 
STUDENT STRUC
    NUMBER  DB  3,?,2   DUP(' ')
    FIO     DB  19,?,18 DUP(' ')
    SPEC    DB  6,?,5   DUP(' ')
    AGE     DB  6,?,5   DUP(' ')
    CR_LF   DB          0DH,0AH
STUDENT ENDS
 
DATA_SEG SEGMENT
    STUDENTS    STUDENT 30  DUP(<>)
    ENDSTR      DB      '$'
    ENTER_NUM   DB      'ENTER YOUR POS: $'
    ENTER_SPEC  DB      'ENTER YOUR GROUP: $'
    ENTER_FIO   DB      'ENTER YOUR FIO: $'
    ENTER_AGE   DB      'ENTER YOUR AGE: $'
    NEWL        DB      0DH,0AH,'$'
    HEADER      DB      '# NAME              SPEC AGE   ',0DH,0AH
    LINE        DB      '-|-----------------|----|------',0DH,0AH,'$'
    SPACE       DB      ' $'
    CHOOSE      DB      'PRESS `n` TO PRINT STRUC AND EXIT, OR TO CONTINUE PRESS ENTER',0DH,0AH,'$'
    
DATA_SEG ENDS
 
CODE_SEG    SEGMENT
 
START:
;DEFINE DATA SEGMENT---------------------
    MOV     AX,DATA_SEG
    MOV     DS,AX
    XOR     AX,AX
 
;TYPE Y/N TO CONTINUE--------------------
    MOV     SI,0
ENTERING_DATA:
    MOV     AH,09H
    LEA     DX,CHOOSE
    INT     21H
    MOV     AH,01H
    INT     21H
    CMP     AL,'n'
    JE      PRINT_SHORT
    
;ENTERING DATA-----------------------------------------
    MOV     AH,09H
    LEA     DX,ENTER_NUM
    INT     21H
 
    MOV     AH,0AH
    LEA     DX,STUDENTS[SI].NUMBER
    INT     21H
    CALL    NEW_LINE
    
    MOV     AH,09H
    LEA     DX,ENTER_FIO
    INT     21H
    
    MOV     AH,0AH
    LEA     DX,STUDENTS[SI].FIO
    INT     21H
    CALL    NEW_LINE
    
    MOV     AH,09H
    LEA     DX,ENTER_SPEC
    INT     21H
    
    MOV     AH,0AH
    LEA     DX,STUDENTS[SI].SPEC
    INT     21H
    CALL    NEW_LINE
    
    MOV     AH,09H
    LEA     DX,ENTER_AGE
    INT     21H
    
    MOV     AH,0AH
    LEA     DX,STUDENTS[SI].AGE
    INT     21H
    CALL    NEW_LINE
    
    INC     SI
    JMP     ENTERING_DATA
;END OF ENTERING DATA--------------------------------------
    
;PRINT SHORT
PRINT_SHORT:
    CALL    PRINT_HEADER
    JMP     PRINT
    
;PRINT STRUCTURE-------------------------------------------
PRINT:
    DEC     SI
 
    MOV     AH,40H
    MOV     CL,[STUDENTS[SI].NUMBER+1]
    LEA     DX,STUDENTS[SI].NUMBER+2
    INT     21H
;PRINT SPACES-----------
    MOV     CL,2
    SUB     CL,[STUDENTS[SI].NUMBER+1]
@LOOP1:
    MOV     AH,09H
    LEA     DX,SPACE
    INT     21H
    LOOP    @LOOP1
 
    MOV     AH,40H
    MOV     CL,[STUDENTS[SI].FIO+1]
    LEA     DX,STUDENTS[SI].FIO+2
    INT     21H
;PRINT SPACES-----------
    MOV     CL,18
    SUB     CL,STUDENTS[SI].FIO+1
@LOOP2:
    MOV     AH,09H
    LEA     DX,SPACE
    INT     21H
    LOOP    @LOOP2
 
    MOV     AH,40H
    MOV     CL,[STUDENTS[SI].SPEC+1]
    LEA     DX,STUDENTS[SI].SPEC+2
    INT     21H
;PRINT SPACES-----------
    MOV     CL,5
    SUB     CL,[STUDENTS[SI].SPEC+1]
@LOOP3:
    MOV     AH,09H
    LEA     DX,SPACE
    INT     21H
    LOOP    @LOOP3
 
    MOV     AH,40H
    MOV     CL,[STUDENTS[SI].AGE+1]
    LEA     DX,STUDENTS[SI].AGE+2
    INT     21H
;PRINT SPACES-----------
    MOV     CL,5
    SUB     CL,[STUDENTS[SI].AGE+1]
@LOOP4:
    MOV     AH,09H
    LEA     DX,SPACE
    INT     21H
    LOOP    @LOOP4
 
    MOV     AX,0
    CMP     AX,SI
    JLE     PRINT
;END OF PRINTING STRUCTURE----------------------------------------
 
;EXIT OF PROGRAM--------------------------------------------------
    MOV     AH,4CH
    INT     21H
 
;PROCEDURES-------------------------------------------------------
NEW_LINE:
    MOV     AH,09H
    LEA     DX,NEWL
    INT     21H
    RET
PRINT_NUM:
    MOV     AH,09H
    LEA     DX,ENTER_NUM
    INT     21H
    RET
PRINT_SPEC:
    MOV     AH,09H
    LEA     DX,ENTER_SPEC
    INT     21H
    RET
PRINT_FIO:
    MOV     AH,09H
    LEA     DX,ENTER_FIO
    INT     21H
    RET
PRINT_AGE:
    MOV     AH,09H
    LEA     DX,ENTER_AGE
    INT     21H
    RET
PRINT_HEADER:
    MOV     AH,09H
    LEA     DX,HEADER
    INT     21H
    RET
;END OF PROCEDURES-------------------------------------------------------
    
CODE_SEG    ENDS
    END     START
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2016, 21:04
Ответы с готовыми решениями:

Задача со структурами турбопролог
нужно решить такую задачу. Найти всех матерей, имеющих менее трех детей. Как это сделать?

Задача со структурами. Ошибка в поиске
Добрый вечер! Пишу программу со структурами, с клавиатуры вводим количество отделов. В кажом отделе...

Задача со структурами и работой с файлами
Надо написать программу, которая сможет поменять параметры структур в файле. Условие такое: В...

Работа со структурами
Только изучаю С++ (раньше довольно неплохо программил на Делфи) и столкнулся с вопросом. Допустим...

3
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
03.10.2016, 22:06 2
Цитата Сообщение от bankbb Посмотреть сообщение
Скорей всего ошибка кроется в определение структуры
Ошибка-то хоть какая? Что именно не получается? Выводит на экран не так что-ли?
На первый взгляд в программе много лишнего, и для ввода значений функция(0Ah) не лучший вариант, т.к. в её буфере тоже валяется всякое барахло, типа макс/реал длина ввода..
0
1 / 1 / 0
Регистрация: 30.04.2014
Сообщений: 62
03.10.2016, 22:15  [ТС] 3
Не правильно выводит значения в структуре. Можете показать как вывести структуре не используя 0АН ?
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
03.10.2016, 23:20 4
Во-первых попробуй поместить структуру в сегмент данных, во-вторых убери [si] из обращения. Приблизительно так..
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DATA_SEG SEGMENT
STUDENT STRUC
    NUMBER  DB  3,?,2   DUP(' ')
    FIO     DB  19,?,18 DUP(' ')
    SPEC    DB  6,?,5   DUP(' ')
    AGE     DB  6,?,5   DUP(' ')
    CR_LF   DB          0DH,0AH
STUDENT ENDS
    USER   STUDENT <>
 
ENTER_NUM   DB      'ENTER YOUR POS: $'
;......
DATA_SEG ENDS
 
CODE_SEG    SEGMENT
START:
;...... пролог и прочее
 
    MOV    AH,0AH
    LEA    DX,USER.NUMBER
    INT    21H
;......
0
03.10.2016, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2016, 23:20
Помогаю со студенческими работами здесь

Код со структурами
Добрый день! Подскажите, почему выдает ошибку &quot;indefined reference to &quot;InsertElem&quot;. #include...

Работа со структурами
Привет братаны!!! Помогите с кодом есть задание написать прогу на тему...

Работа со структурами
Почему-то после того как я ввожу количество студентов программа сама завершается с кодом 0. ...

Работа со структурами
Помогите написать программу подобного рода: Работа со структурами. Программа должна содержать...


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

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