|
|
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Нужно помочь разобраться с кодом программы написанным на есемблере! Завтра защита курсовой а я вообще ничего понять не могу! Если не тяжело прошу откоментировать каждую строчку. Заранее спасибо за помощь! Вот код: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 13:52 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Этот есемблер мне вообще не нужен я в основном на делфе программирую, но есть такое "но" как учебная программа университета! Нам сказали взять код из Юрова и дописать код на вывод масива. На паре просто объяснить любой кусок программы который захочет препод! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:17 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ТС, заставьте себя повнимательнее посмотрить в код программы, которую написали у вас каждый участок программы достаточно полно прокомментирован (, тем более "на делфе программируете" - разберетесь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:24 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIR,это код не на столько сложный что бы за его объяснение платить! или я ошибаюсь? В принципе в книге он расписан немного но хотелось бы не теряться в нем когда спросят! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:24 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
я вообще есемблер не знаю вот в чем проблема! При других обстоятельствах я бы на форум не обращался! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:26 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
тогда, задавайте вопрос более конкретно, что, в каком месте - не понятно? иначе, получается, что вам непонятно все - а за 1 день знания не придут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:33 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIRтогда, задавайте вопрос более конкретно, что, в каком месте - не понятно? иначе, получается, что вам непонятно все - а за 1 день знания не придут Если не тяжело то откоментируйте все строки начиная от "push si". А с командами я как то разберусь гугл мне в этом поможет)) Заранее весьма благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:46 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Sho0t, Они и так почти все откомментированы, за вычетом main. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:54 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIR,но если у вас нету времени прошу объяснить хотя бы эту часть кода: mov cx,0 mov ah,02h lea si,mas outmas: mov dl,[si] add dl,30h int 21h inc cx inc si cmp cx,10 jb outmas ;выход mov ax,4c00h int 21h end main ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:56 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
AbstractionSho0t, Они и так почти все откомментированы, за вычетом main. Ах да и main тоже если можно! А с остальным разберусь! И еще раз спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 14:57 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Sho0t, 21h прерывание -это сервис DOS ah =2 -вывод на дисплей 4с -стандартное завершение программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:06 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
push si push cx ;С этой конструкции (инструкций) начинается ПРОЦЕДУРА insert_item_in_tree (выше описание заголовка) ;инструкция push помещает значение в стек ;зачем эта инструкция здесь - непонятно ;можно предопложить, что автор намерен использовать в теле процедуры регистры si и cx, ;и заранее обезопасился, но по факту этого не видно ;другое предположение - вместо пользователя эти инструкции написал компилятор с другого языка ... pop cx pop si ret ;Здесь выход из процедуры ;Инструкция pop возвращает верхний элемент из стека ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:10 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIRpush si push cx ;С этой конструкции (инструкций) начинается ПРОЦЕДУРА insert_item_in_tree (выше описание заголовка) ;инструкция push помещает значение в стек ;зачем эта инструкция здесь - непонятно ;можно предопложить, что автор намерен использовать в теле процедуры регистры si и cx, ;и заранее обезопасился, но по факту этого не видно ;другое предположение - вместо пользователя эти инструкции написал компилятор с другого языка ... pop cx pop si ret ;Здесь выход из процедуры ;Инструкция pop возвращает верхний элемент из стека спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:13 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIR, а что вы скажите об этой части кода? main: mov dx,@data mov ds,dx mov cx,0 mov ah,02h lea si,mas inmas: mov dl,[si] add dl,30h int 21h inc cx inc si cmp cx,10 jb inmas mov dx,0Ah int 21h mov dx,0Dh int 21h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:15 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Sho0t, это вывод массива на экран с переводом строки в конце ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:22 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Sho0t, main: mov dx,@data mov ds,dx ;если посмотреть в начало программы, то можно увидеть .data ;здесь в сегментные регистры dx,ds загружается начало сегмента данных ;ПОСМОТРЕТЬ(в учебнике), что такое сегментная модель small ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:24 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIR, а можно по конкретней объяснить этот кусок кода mov cx,0 mov ah,02h lea si,mas inmas: mov dl,[si] add dl,30h int 21h inc cx inc si cmp cx,10 jb inmas mov dx,0Ah int 21h mov dx,0Dh int 21h и этот ;вывод mov cx,0 mov ah,02h lea si,mas outmas: mov dl,[si] add dl,30h int 21h inc cx inc si cmp cx,10 jb outmas И на этом думаю все, тока желательно полностью их объяснить а не в общем, если можно конечно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:36 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
асемблер.... оляля.... что вспоминается main: mov dx,@data mov ds,dx почему не mov ds,@data - патамушта сегментные регистры сами с памятью не умеют работать - они же в этой работе используются mov cx,0 mov ah,02h lea si,mas в si - адрес того самого массива... mov dl,[si] add dl,30h в закинули байт, добавили 30h - код нуля. похоже - получили из цифры 0...9 аски-код... int 21h посмотрел на содержимое ah которое заполнено mov ah,02h и вывел символ http://yandex.ru/yandsearch?text=int+21h+02h&lr=213 inc si - увеличили si - он у нас для адресации используется inc cx - увеличили cx, потом прыгнем если там ... то ли 10 то ли больше? cmp cx,10 - сравнили cx с 10 jb inmas - собственно пругнули на метку.... склероз..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:40 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
GwaSho0t, это вывод массива на экран с переводом строки в конце mov cx,0;cx используется как счетчик, обнуляется mov ah,02h;будем использовать фукцию 02h для прерывания int lea si,mas; определим адрес данных mas db 9,0,6,7,4,1,5,2,8,3 ;! всего 10 байт inmas:;это метка на нее будем возвращаться mov dl,[si];si - это указатель на mas, помещаем в dl следующий байт add dl,30h;ПОСМОТРЕТЬ что такое таблица ISCII - здесь выполняется преобразование к символу int 21h;вызываем фукцию 02h inc cx; увеличиваем счетчик inc si;переходим к следующему элементу в mas cmp cx,10; сравнимаем счетчик и 10 jb inmas; если счетчик меньше 10 переходим на метку inmas ;ниже выводим символы 10 и 13 - это перевод картеки mov dx,0Ah;Это 10 int 21h mov dx,0Dh;Это 13 int 21h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:42 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovасемблер.... оляля.... что вспоминается main: mov dx,@data mov ds,dx почему не mov ds,@data - патамушта сегментные регистры сами с памятью не умеют работать - они же в этой работе используются mov cx,0 mov ah,02h lea si,mas в si - адрес того самого массива... mov dl,[si] add dl,30h в закинули байт, добавили 30h - код нуля. похоже - получили из цифры 0...9 аски-код... int 21h посмотрел на содержимое ah которое заполнено mov ah,02h и вывел символ http://yandex.ru/yandsearch?text=int+21h+02h&lr=213 inc si - увеличили si - он у нас для адресации используется inc cx - увеличили cx, потом прыгнем если там ... то ли 10 то ли больше? cmp cx,10 - сравнили cx с 10 jb inmas - собственно пругнули на метку.... склероз..... спасибо огромное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:47 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
mov cx,0 mov ah,02h lea si,mas outmas: mov dl,[si] add dl,30h int 21h inc cx inc si cmp cx,10 jb outmas ;это такой же вывод как и предыдущий, ;с тем исключением, что не выводиться перевод каретки, ;вместо этого выполняется завершение программы: mov ax,4c00h int 21h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:48 |
|
||
|
Помогите пожалуйста, вопрос жизни и смерти!!! Нужно разобраться с кодом Assembler!!!Плз
|
|||
|---|---|---|---|
|
#18+
ALKIRGwaSho0t, это вывод массива на экран с переводом строки в конце mov cx,0;cx используется как счетчик, обнуляется mov ah,02h;будем использовать фукцию 02h для прерывания int lea si,mas; определим адрес данных mas db 9,0,6,7,4,1,5,2,8,3 ;! всего 10 байт inmas:;это метка на нее будем возвращаться mov dl,[si];si - это указатель на mas, помещаем в dl следующий байт add dl,30h;ПОСМОТРЕТЬ что такое таблица ISCII - здесь выполняется преобразование к символу int 21h;вызываем фукцию 02h inc cx; увеличиваем счетчик inc si;переходим к следующему элементу в mas cmp cx,10; сравнимаем счетчик и 10 jb inmas; если счетчик меньше 10 переходим на метку inmas ;ниже выводим символы 10 и 13 - это перевод картеки mov dx,0Ah;Это 10 int 21h mov dx,0Dh;Это 13 int 21h Огромное спасибо, классно расписали...все сразу стало понятно! И следующий кусок также если можно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 15:50 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37779065&tid=1342287]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 404ms |

| 0 / 0 |
