Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
biofan
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 16
1

Через стек по ссылке

01.06.2015, 18:14. Просмотров 255. Ответов 2
Метки нет (Все метки)

Задание такое
Ввод x,y
Вывод x+y=100(Да/Нет)
Через стек по ссылке.
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
extrn InputInt:near
extrn prg:near
begin segment ; Сегмент кода программы
assume cs:begin,ds:data,ss:komod
start:
    mov ax,data ; Настройка DS на начало сегмента данных
    mov ds,ax ; в ds записываем ах
call InputInt 
mov bx,ax
push bx; 1 загрузили
call InputInt 
push ax; 2 загрузили
push cx             ;помещаем сx в стек
    push dx             ;помещаем dx в стек
    push si             ;помещаем si в стек 
    CALL prg ;вызываем процедуру 
call InputInt 
int  21h
begin ends
 
data segment public ; Сегмент данных 
s db 6, 7 dup(?)
Msg1 db 13,10,'$'
Msg2 db 13,10,13,10,'$'
data ends
 
komod segment stack ; Сегмент стека 
    dw 256 dup (?) ; под стек отводится 128 слов 
Komod ends
end start
public InputInt
public prg
 
code segment
InputInt proc near
                         assume cs:code, ds:data
push bx  ; в десятичной системе счисления
push cx  ; в диапазоне0-65535 с консоли(клавиатуры). 
push dx  ; На выходе в регистреax 
push si  ; находится введенное число. 
 mov dx,offset strdsc   
mov ah,0Ah  
int 21h 
mov dl,0Ah 
mov ah,2 
int 21h 
xor ax,ax 
xor cx,cx 
mov cl,[strdsc+1] 
 mov si,offset strbuf 
mov bx,10 
s1: 
mul bx 
mov dl,[si] 
inc si 
sub dl,30h 
add ax,dx 
loop s1 
pop si 
pop dx 
pop cx 
pop bx 
ret 
InputInt endp
 
prg PROC near ;задаем значение near для процедуры
add bx,ax
cmp bx,64 ; в 16-ричной 
    jz met1 ;если равно,то переходим на Met1 
    mov ah,9 ;Функция 9 сервиса DOS:
    mov dx,offset Net ; вывод строки  
    int 21h ; вызываем прерывание
    ret ;выход
    met1:  
    mov ah,9 ;Функция 9 сервиса DOS:
    mov dx,offset Da ; вывод строки 
    int 21h ; вызываем прерывание
    ret ;выход
    prg endP ;процедура закончена
 
 
 code ends
 
data segment public 
strdsc db 6,0 
strbuf db 6 dup (?) 
DA db 'DA',13,10,'$'
    Net db 'NET',13,10,'$'
data ends 
end
Эта программа почему-то работает у меня в с 16-ными числами, т.е. ввожу 100, а переводит в 64. Как исправить?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 18:14
Ответы с готовыми решениями:

Сделать через стек
Программа которая находит n-член арифметической прогрессии. Вот она (проверьте на правильность)...

Передача параметров через стек
Здравствуйте! Подскажите как можно переменную передать через стек в качестве параметров и как...

Перенос параметров через стек
Доброго времени суток . Даны два массива , заменить элемент массива кратный 5 на первый...

Передача параметров через стек
Здравствуйте . Вот есть задача решить уравнение 2*d/3*c - 6*c*d , используя внешние процедуры....

Передача через стек параметры в процедуру
Пытаюсь реализовать первое действие. Точнее проверить его. Реализовать в процедуре действие...

2
Ethereal
4858 / 1878 / 246
Регистрация: 17.02.2013
Сообщений: 2,794
02.06.2015, 00:48 2
Если ты вводишь 100, то на выходе из процедуры InputInt в ax именно 100 = 64h
1
biofan
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 16
05.06.2015, 16:34  [ТС] 3
У меня ошибки в коде, а именно, передаю значение в некоторых местах не через стек по ссылке, можете пожалуйста исправить или хотя бы указать, на это и объяснить, как исправить

Добавлено через 6 часов 20 минут
Можно закрывать тему
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2015, 16:34

Посчитать кубы по формуле через стек
a3+b3-c3 (все числа в кубе)

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

Передача параметров через стек. Тип процедуры – ближний
Всем привет! Есть задание: Ввести 8-битовое целое число А. Если оно четное, вычислить значение...


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

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

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