Выпуск № 1234 от 11.07.2009, 11:05
Администратор рассылки: Лысков Игорь Витальевич, Модератор
В рассылке: подписчиков - 427, экспертов - 62
В номере: вопросов - 1, ответов - 1
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170163: Здравствуйте, уважаемые эксперты. Потребовалась помощь - нужно объяснить в программе назначение команд. Assembler знаю плохо, т.к. только начал его изучать, но все же не полный ноль. Зараннее спасибо!...
Вопрос № 170163:
Здравствуйте, уважаемые эксперты. Потребовалась помощь - нужно объяснить в программе назначение команд. Assembler знаю плохо, т.к. только начал его изучать, но все же не полный ноль. Зараннее спасибо!
;--------------------------------------------------------------------- ;вывести на экран результат вычисления (2*c - 7*b*a^2) MOD (3*(a+b)+c) ;--------------------------------------------------------------------- main proc
;поместить в ds сегментный адрес
сегмента dseg mov ax,dseg mov ds, ax
;3*(a+b)+c mov ax, a add ax, b ;ax = a+b mov bx, 3 imul bx ;dx:ax = ax*bx add ax, c ;ax = ax + c
push ax ;[3*(a+b)+c]
;7*b*a^2 mov ax, a mov bx, a imul bx ;dx:ax = ax*bx imul b ;dx:ax = ax*b mov dx, 7 imul dx ;dx:ax = ax*dx
push ax ;[7*b*a^2]
;2*c mov ax, c mov bx, 2 imul bx ;dx:ax = ax*bx
pop
bx ;[7*b*a^2]
;2*c - 7*b*a^2 sub ax, bx ;ax = ax - bx
pop bx ;[3*(a+b)+c]
;(2*c - 7*b*a^2) / (3*(a+b)+c)
idiv bx ;ax,dx = dx:ax / bx
call write_int
mov ax, 4c00h int 21h main endp
;------------------------------------------------------------------ ;подпрограмма вывода текстового представления целого числа на экран ;DX = целое знаковое ;------------------------------------------------------------------
;цикл деления на 10 get_next: mov dx, 0 mov bx, 10 div bx ;ax,dx = dx:ax / bx push dx ;остаток inc cx cmp ax, 0 jne get_next
;цикл вывода значащих разрядов write_next: mov ah, 06h pop dx add dx, '0' int 21h loop write_next
pop cx pop bx ret write_int endp
cseg ends
;сегмент стека ;неинициализированные данные лучше размещать в конце модуля, в этом случае размер EXE файла будет меньше sseg segment stack db 65535 dup(?) sseg
ends
end main
Ответ отправил: Alex_S, 7-й класс
Ответ отправлен: 05.07.2009, 19:30
Оценка ответа: 5 Комментарий к оценке: Спасибо за ответ. Все что было не понятно увидел и разобрался.
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251873
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.