Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Velll
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 2
#1

Не могу понять для чего используется регистр es в процедуре

21.12.2010, 14:00. Просмотров 1308. Ответов 3
Метки нет (Все метки)

Пользователь вводит два числа А и В в шестнадцатеричном ви-де. Программа должна:
1. Посчитать С=А/2+В.
2. Выполнить арифметический сдвиг С на 3 бит влево.
3. Вывести на экран число С и все промежуточные результаты в двоичном виде.
4. Написать макрос для вывода результата
5. Написать процедуру для ввода чисел
6. Написать процедуру для расчета
7. Передача параметров через стек
8. Используйте стандартные директивы сегментации и формат сом-программы.

Сама программа:
strout macro str
mov dx, offset str
mov ah, 9
int 21h
endm

outn macro n
local o1
mov cx, 16
mov ah, 2
xor dx, dx
o1:
rol n, 1
adc dl, 30h
int 21h
xor dl, dl
loop o1
endm

cseg segment
assume cs:cseg, ds:cseg, ss:cseg
org 100h

mes1 db 'a = $'
mes2 db 'b = $'
mes3 db 'a / 2 = $'
mes31 db 'a / 2 + b = $'
mes4 db 'c << 3 = $'
mes5 db 10, 13, '$'
a db (?)
b db (?)
c db (?)

inputn proc
xor cl, cl
inpt:
mov ah, 1
int 21h
cmp al, 13
je exit
sub al, 30h
cmp al, 9
jle s
sub al, 7
cmp al, 15
jle s
sub al, 20h
s:
shl cl, 4
add cl, al
jmp inpt
exit:
ret
inputn endp

calc proc
pop es

pop ax

shr ax, 1
mov bx, ax
strout mes3
outn bx
strout mes5

pop ax
add ax, bx
mov bx, ax

strout mes31
outn bx
strout mes5

shl bx, 3
strout mes4
outn bx

push es
ret
calc endp

main proc
mov ax, cseg
mov ds, ax

strout mes1
call inputn
mov a, cl
strout mes5

strout mes2
call inputn
mov b, cl
strout mes5

xor ah, ah
mov al, b
push ax

mov al, a
push ax

call calc

mov ah, 4ch
int 21h
main endp

cseg ends
end main
Объясните, пожалуйста, что поместится в es в процедуре calc и для чего это вообще нужно?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 14:00
Ответы с готовыми решениями:

Студент. Хочу понять что такое ассемблер, как на нем писать, как его понять и с чего начать
Ребят, хочу понять ассемблер. Проблема в том, что я студент, пары...

В процедуре в регистр AX помещается результат выражения, как его вернуть с процедуры, чтобы вывести на экран
Имеется процедура, в ней в регистр AX помещается результат выражения, как его...

Не могу понять понять смысл резидентной программы
Суть препод кинул резидент, сказал чтобы сами разбирались. Увидел что ее...

Не могу понять для чего этот тестер
Нашел на складе тестер,не могу понять для чего он.

Не могу понять для чего третья переменная в параметрах функции
int binpow (int a, int n) вот это понимаю, а вот этот не могу понять, что...

3
murderer
3581 / 1464 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
21.12.2010, 15:31 #2
в процедуре calc в es извлекается адрес возврата, затем извлекаются параметры процедуры затем адрес возврата помещается обратно в стек для инструкции ret.
0
Velll
0 / 0 / 0
Регистрация: 18.12.2010
Сообщений: 2
21.12.2010, 19:27 #3
А откуда в стеке адрес возврата, ведь до этого мы ничего кроме регистра ax не помещали?
0
murderer
3581 / 1464 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
21.12.2010, 20:23 #4
call помещает в стек адрес следующей инструкции и делает jmp в процедуру
ret извлекает из стека адрес возврата и делает jmp на него
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2010, 20:23

Не могу понять для чего нужен этот участок кода
Не могу понять что он делает !!! Так то понятно что метод FileExists поверяет...

Не могу понять, что за язык используется
Попал сайт в руки, не могу понять что за язык скриптов в нём используется? Это...

Не могу понять, какой JS используется в элементе
Всем привет. Мне очень интересно, как же работает элемент со сменой...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru