0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 3
1
MASM

Вывести значение регистра

05.11.2013, 13:25. Показов 1427. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Лаба следующая: задаются некоторые числа m, x и n. Если mx>n, вычислить y = (mx+n)/(mx-n). Если mx=n,
y = (mx+n)^2. Если mx<n, y = mx^2-nx. Запускаю прогу в ollydbg, она останавливается на int 21h в функции great, и все, ничего не выводит. Даже консоль не появляется. Подскажите, как вывести значение регистра? И как можно доработать программу, чтобы, например, остаток при делении вычисляла? Пишу в masm.

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
.386
    .model  flat,stdcall
    option casemap:none
    include    c:\masm32\include\kernel32.inc
    includelib c:\masm32\lib\kernel32.lib
.data
    m dd 7
    n dd 5
    x dd 3
    stdout   dd ?
.code
start:
    invoke GetStdHandle, -11
    mov stdout, eax
    mov eax, m
    mul x
    mov ebx, n
    cmp eax, ebx
        jg great
        je equal
        jl less
    great:
        add ebx, eax
        mov eax, m
        mul x
        mov ecx, eax
        sub ecx, n
        mov eax, ebx
        div ecx
        mov ah, 02
        mov edx, eax
        int 21h
        jmp exit
    equal:
        add eax, ebx
        mul eax
        mov ah, 02
        mov edx, eax
        int 21h
        jmp exit
    less:
        mov eax, x
        mul eax
        mul m
        mov ebx, eax
        mov eax, n
        mul x
        sub ebx, eax
        mov ah, 02
        mov edx, ebx
        int 21h
        jmp exit
    exit:
        ret
        end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 13:25
Ответы с готовыми решениями:

Как вывести значение регистра BX?
Находится минимальный элемент в массиве, и число 100 делится на этот минимальный элемент. После...

Вывести значение регистра на экран
Есть такая проблема, пишу резидент, поэтому в части реализации недоступны многие функции, кручусь...

Как вывести на экран значение регистра?
Помогите, не получается вывести на экран значение регистра cx, какие-то кракозябры только...

[FASM] Вывести значение регистра на консоль
Нужно вывести значение регистра cl на консоль. Собственно сама задача заключается в том, чтобы...

4
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
05.11.2013, 14:53 2
Цитата Сообщение от hardstyle Посмотреть сообщение
останавливается на int 21h
Под вынью не используется int 21h. Досовский в/в чисел есть здесь.
0
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 3
07.11.2013, 03:36  [ТС] 3
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Под вынью не используется int 21h. Досовский в/в чисел есть здесь.
ну там же тоже 21h есть... я пытался что то похожее на ваш пример сделать, но ничего не вышло
0
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
07.11.2013, 05:29 4
hardstyle,
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
; masm windows console #
include \masm32\include\masm32rt.inc
.586
.data
    m dd 7
    n dd 5
    x dd 3
format db "%d",0
string db 20 dup(?)
.code
start:  mov ecx,m
    imul ecx,x; ecx=7*3=21
    sub ecx,n ; ecx=21-5=17
    jc a0
    je a1
    mov eax,5 ; eax=5
    add eax,eax; eax=10 
    add eax,ecx; eax=27
    cdq
    idiv ecx   ;27/17=1
    jmp a2
a0: mov eax,x
    imul eax,m
    sub eax,n
    imul eax,x
    jmp a2
a1: mov eax,x
    imul eax,m
    add eax,n
    imul eax
a2: invoke crt_sprintf, addr string,addr format, eax
    print addr string,10,13
    inkey
    exit
        end start
1
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
07.11.2013, 10:03 5
Цитата Сообщение от Mikl___ Посмотреть сообщение
a2: invoke crt_sprintf, addr string,addr format, eax
print addr string,10,13
a2: invoke crt_printf, addr format, eax
print не нужен, string тоже, ну и добавить
format db "y=%d",10,13,0
2
07.11.2013, 10:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2013, 10:03
Помогаю со студенческими работами здесь

Не выводится значение регистра dx, в котором находится значение остатка от деления
собственно сабж Доброго времени суток, прошу подсказать, что в нижеприведенной программе...

Сложить два регистра и вывести значение на экран
Сложить два регистра и вывести значение на экран. fasm, os 64bit так понимаю mz не пойдет надо...

Значение регистра
Hello, Ребят, такой вопрос. Нахожу адрес инструкции в процессе, которая имеет вид &quot;mov eax,&quot;....

Занести значение регистра
Assembler: занести во все 4 байта любого регистра значение регистра AL, не использовать смещение...

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

Преобразовать значение регистра АХ
Какие либо исходные данные поместить в сегменте данных. Преобразовать значение регистра АХ в...


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

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

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