Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 36
1

Значения регистров после выполнения действий Push и pop

19.12.2011, 10:03. Показов 7027. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
hi ALL плз. зачет горит.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
1. Дан фрагмент программы на ассемблере :
push BX
push CX
push DX
push AX
mov AX,3508h
add BX,AX
pop AX
pop DX
mov AX,CX
shl BX,1
not AX
В каждом задании даны начальные значения регистров AX,BX,CX,DX. Определить значения этих регистров после выполнения данного фрагмента.
AX=35ADh, BX=1000h, CX=2100h, DX=0C03h

Assembler
1
2
3
4
5
6
7
8
2. Дан фрагмент программы на ассемблере :
push AX
shr BX,1
add CX,BX
not CX
kjl: add BX,3
loop kjl
or AX, DX
В каждом задании даны начальные значения регистров AX,BX,CX,DX. Определить значения этих регистров после выполнения данного фрагмента.
AX=0E00h, BX=3828h, CX=3251h, DX=000Fh

Добавлено через 1 час 7 минут
вот попытался сам решить, подскажите верно нет?
1 Задание
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
TITLE lab1      ;
.MODEL small    ;отводим под стек и под данные по 64Кб
.STACK 100h     ;отмечаем начало сегмента стека
.DATA           ;отмечаем начало сегмента данных
        
AX DW 35ADh             ;
BX DW 1000h             ; 
CX DW 2100h             ; 
DX DW 0C03h             ; 
 
.CODE           ;отмечаем начало сегмента кодов
main PROC   
 
push AX
push BX
push CX
push DX
 
mov AX,3508h
add BX,AX
pop AX
pop DX
mov AX,CX
shl BX,1
not AX
 
 
MOV DX,4C00h    ;выход 
INT 21h     ;из программы
 
main ENDP   
 
END main

результат
AX=FFFF, BX=6A10, CX=0000, DX=4C00

2 Задание
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
TITLE lab1      ;
.MODEL small    ;отводим под стек и под данные по 64Кб
.STACK 100h     ;отмечаем начало сегмента стека
.DATA           ;отмечаем начало сегмента данных
        
AX DW 0E00h             ; Определяем переменные типом WORD
BX DW 3828h             ; 
CX DW 3251h             ; 
DX DW 000Fh             ; 
 
.CODE           ;отмечаем начало сегмента кодов
main PROC   
 
push AX
shr BX,1
add CX,BX
not CX
kjl: add BX,3
loop kjl
or AX,DX
 
 
MOV DX,4C00h    ;выход 
INT 21h     ;из программы
 
main ENDP   
 
END main

результат
AX=0000, BX=0483, CX=FE78, DX=0000
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2011, 10:03
Ответы с готовыми решениями:

Как изменится состояние регистров после выполнения PUSH AX и POP DX
Учусь на заочке и тут по архитектуре аппаратных средств прилетает практическая работа, а в ней...

Сделать так чтобы если вводится push выполнялась функция push, если pop то pop
Помогите пожалуйста с данным вопросом: например у меня есть список и несколько возможных с ним...

Определить значения регистров после выполнения фрагмента программы
Дан фрагмент программы на ассемблере: push BX push CX push DX push AX mov AX,3508h add BX,AX...

Модифицировать программу, имитирующую работу стека, так, чтобы после каждой из операций push и pop на экран выводился сн
Модифицировать программу, имитирующую работу стека, так, чтобы после каждой из операций push и pop...

6
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
19.12.2011, 13:08 2
по 1)
...сегмент данных не настроен
...так низя
Цитата Сообщение от casper200 Посмотреть сообщение
Assembler
1
2
3
4
AX DW 35ADh ;
BX DW 1000h ; 
CX DW 2100h ; 
DX DW 0C03h ;
лучше:
Assembler
1
2
3
4
5
6
.CODE
main PROC  
mov ax,35adh
mov bx,1000h 
mov cx,2100h
mov dx,0C03h
и надобность настраивать сегмент данных отпадает..

...замени DX на AX:
Цитата Сообщение от casper200 Посмотреть сообщение
MOV DX,4C00h ;выход
INT 21h ;из программы

результат получен перед входом в функцию: ah=4ch(21h) (из TD):
AX = 0DEFFh
CX = 02100h
BX = 08A10h
DX = 02100h
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 36
19.12.2011, 13:38  [ТС] 3
hi zzzyyyxxx спасибо за подсказку!
получил следующее
1 Задание
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
TITLE lab1      ;
.MODEL small    ;®вў®¤Ё¬ Ї®¤ б⥪ Ё Ї®¤ ¤***лҐ Ї® 64ЉЎ
.STACK 100h     ;®в¬Ґз*Ґ¬ **з*«® ᥣ¬Ґ*в* б⥪*
.DATA           ;®в¬Ґз*Ґ¬ **з*«® ᥣ¬Ґ*в* ¤***ле
        
.CODE
main PROC  
mov ax,35adh
mov bx,1000h 
mov cx,2100h
mov dx,0C03h
 
mov AX,3508h
add BX,AX
pop AX
pop DX
mov AX,CX
shl BX,1
not AX
 
 
MOV AX,4C00h    ;ўл室 
INT 21h     ;Ё§ Їа®Ја*¬¬л
 
main ENDP   
 
END main

Результат
AX = 0DEFFh
CX = 02100h
BX = 08A10h
DX = 00300h - отличается от Вашего... почему не подскажите? скрин 1.png

2 Задание
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
TITLE lab1      ;
.MODEL small    ;®вў®¤Ё¬ Ї®¤ б⥪ Ё Ї®¤ ¤***лҐ Ї® 64ЉЎ
.STACK 100h     ;®в¬Ґз*Ґ¬ **з*«® ᥣ¬Ґ*в* б⥪*
.DATA           ;®в¬Ґз*Ґ¬ **з*«® ᥣ¬Ґ*в* ¤***ле
        
 
.CODE           ;®в¬Ґз*Ґ¬ **з*«® ᥣ¬Ґ*в* Є®¤®ў
main PROC   
 
mov AX,0E00h            ; ЋЇаҐ¤Ґ«пҐ¬ ЇҐаҐ¬Ґ**лҐ вЁЇ®¬ WORD
mov BX,3828h            ; 
mov CX,3251h            ; 
mov DX,000Fh    
 
push AX
shr BX,1
add CX,BX
not CX
kjl: add BX,3
loop kjl
or AX,DX
 
MOV AX,4C00h    ;ўл室 
INT 21h     ;Ё§ Їа®Ја*¬¬л
 
main ENDP   
 
END main

застреваю за цикле, как его пройти? не подскажите, а то значения проверить не могу....
в цикле они следующие
Результат
AX = 00E00h
CX = 0B187h
BX = 01C50h
DX = 0000Fh
скрин 2.png
Миниатюры
Значения регистров после выполнения действий Push и pop   Значения регистров после выполнения действий Push и pop  
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
19.12.2011, 14:01 4
1) ну ты 'съел' этот момент:
Assembler
1
2
3
4
push AX
push BX
push CX
push DX
в задании указано.., на 12. вставь их

да и вообще, в задании 4 push и 2 pop, т.е. до реального выхода(на момент выхода) из проги в стеке 2 word
надо бы хоть так:
м/у .7 и .8 [mov si,sp], а перед вызовом функции (выход), восстановим указатель [mov sp,si]

2) breakpoint ни о чём не говорит?
установи его на [mov ax,4c00h](выдели строку и нажми F2), далее нажимаешь F9 и всё, смотри регистры.
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 36
19.12.2011, 14:25  [ТС] 5
по 2 заданию
2) breakpoint ни о чём не говорит?
низкий поклон, разобрался
результат (не проверите верно,-нет?)
AX=00E0Fh
BX=030E2h
CX=00000h
DX=0000FH


По первому заданию получил идентичные Вашим данные после добавления
Push. не понял про
надо бы хоть так:
м/у .7 и .8 [mov si,sp], а перед вызовом функции (выход), восстановим указатель [mov sp,si]
так нужно на сколько я понял?, (код ниже)
Assembler
1
2
3
4
5
6
7
8
9
mov si,sp
mov AX,3508h
add BX,AX
pop AX
pop DX
mov AX,CX
shl BX,1
not AX
mov sp,si
Но при этом результат не меняется... В чем смысл? (прости за неграмотность)
0
766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
19.12.2011, 14:55 6
2) совпадает(ну эт как говорится и к бабке не ходи)

Цитата Сообщение от casper200 Посмотреть сообщение
м/у .7 и .8 [mov si,sp], а перед вызовом функции (выход), восстановим указатель [mov sp,si]
ну типа в стэк занесён адрес (выхода из программы) при запуске в TD: sp = 100 (1676h) ну вроде как возврат к MS DOS, от тебя не зависит данный момент, но ты должен сделать на выходе sp = 100(в твоём случае) для корректного завершения, вообще так как ты работаешь в эмуляторе MS DOS, то это не обязательно, хотя знать это не будет лишним(в WIN, то же самое)...
и само сабой результат не изменится, смотри в стек и ты увидишь что происходит (правое нижнее окно)
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 36
19.12.2011, 15:57  [ТС] 7
спб. zzzyyyxxx
в общих чертах осознал
0
19.12.2011, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2011, 15:57
Помогаю со студенческими работами здесь

Каким будет содержание регистров после выполнения команд
1. Каким будет содержание регистров IP и CS после выполнения команды JMP FAR PTR OPR, если метка...

Найти содержимое регистров после выполнения группы команд
Задано содержимое регистров AL, BL i DL. Найти содержимое регистров после выполнения группы команд:...

Push, Pop
Вот такое задание: F=Ʃ от 1 до 5 f (Ai) A1=2 Ai+1=Ai+2 Ai=(3*A)+(C/D). Нужно записать эту...

push и pop
У меня возникла странная проблема. Мы создали сайт на основе системы управления, которой...


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

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