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

Как вывести значение регистра BX?

14.05.2016, 13:35. Просмотров 706. Ответов 6
Метки нет (Все метки)

Находится минимальный элемент в массиве, и число 100 делится на этот минимальный элемент. После этого результат помещается в регистр BX
помогите, как вывести результат на экран?
Писал в конце перед пересылкой в BX
Assembler
1
mov ah,09h
И после
Assembler
1
int 21h
но не помогло, только мусор вывелся

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
sseg    segment stack
        dw      256 dup (?)
sseg    ends
dseg    segment
data1   db      10, 39, -16, 113, 28, 48, 85
dseg    ends
cseg    segment
        assume  cs:cseg, ds:dseg, ss:sseg
@:      mov     ax, dseg      
        mov     ds, ax
        mov     bx, offset data1
        mov     dl, [bx]       
        mov     cx, 6          
@1:     inc     bx             
        cmp     dl, [bx]        
        jle     @2            
        mov     dl, [bx]        
@2:     loop    @1
        mov     ax, 100         
        idiv    dl              
        cbw                    
        mov     bx, ax          
 
        mov     ax, 4C00h
        int     21h
cseg    ends
        end     @
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2016, 13:35
Ответы с готовыми решениями:

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

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

Лабораторная работа. Немогу вывести значение регистра
Лаба следующая: задаются некоторые числа m, x и n. Если mx>n, вычислить y =...

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

Как можно узнать значение регистра ip
call near ptr sec0 sec0: mov si,$ pop si mov si,cs:sec0 Как ещё можно...

6
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,539
14.05.2016, 13:56 2
Цитата Сообщение от Jack_15 Посмотреть сообщение
После этого результат помещается в регистр BX
Jack_15,
в http://www.cyberforum.ru/assembler/thread54461.html http://www.cyberforum.ru/cgi-bin/latex.cgi?\to "Вывод целого знакового, либо беззнакового числа" обрати внимание на фразу
Число для вывода должно находиться в ax.
всё что от тебя требуется это написать команду mov ax,bx а дальше копируй содержимое из #2
0
Jack_15
1 / 1 / 0
Регистрация: 13.09.2015
Сообщений: 56
14.05.2016, 14:09  [ТС] 3
я так и сделал, но в результате каждый раз выводится число 10, которое вообще непонятно где берётся..
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
sseg    segment stack
        dw      256 dup (?)
sseg    ends
dseg    segment
data1   db      4, 39, -16, 113, 28, 48, 85
dseg    ends
cseg    segment
        assume  cs:cseg, ds:dseg, ss:sseg
@:      mov     ax, dseg      
        mov     ds, ax
        mov     bx, offset data1
        mov     dl, [bx]       
        mov     cx, 6          
@1:     inc     bx             
        cmp     dl, [bx]        
        jle     @2            
        mov     dl, [bx]        
@2:     loop    @1
        mov     ax, 100         
        idiv    dl              
        cbw                    
        mov     bx, ax          
        mov ax,bx
OutInt proc
        aam 
        add ax,3030h 
        mov dl,ah 
        mov dh,al 
        mov ah,02 
        int 21h 
        mov dl,dh 
        int 21h
OutInt endp 
        mov     ax, 4C00h
        int     21h
cseg    ends
        end     @
0
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,511
Записей в блоге: 5
14.05.2016, 14:50 4
Jack_15, скачай Turbo Debugger и посмотри, что кладётся в регистры на каждом шаге.
0
Charles Kludge
Клюг
7646 / 3161 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
14.05.2016, 14:52 5
Jack_15, держи, переписал под 16 бит. И да, директиву .686 и команду cmovs убирать нежелательно - сколько можно топтаться на уровне эмо86emu8086?
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
.model  small
.686
.stack
.data
data1   db 10, 39, -16, 113, 28, 48, 85
.code
main:   mov     ax, @data
    mov ds, ax
    mov bx, offset data1
    mov dl, [bx]
    mov cx, 6
@1:     inc     bx
    cmp dl, [bx]
    jle @2
    mov dl, [bx]
@2:     loop    @1
    mov ax, 100
    idiv    dl
    cbw
    push    ax
    call    _cputi
    pop bx
 
    mov ax, 4C00h
    int 21h
; ax - signed int
_cputi:
        push    bx
    mov bx, ax
    neg bx
    cmovs   bx, ax
    js  @F
    mov al, '-'
    int 29h
@@: mov ax, bx
    pop bx
 
; ax - unsigned int
 
_cputul:
    xor cx, cx
    mov bx, 0Ah
    xor si, si
    xor di, di
@@: xor dx, dx
    inc cx
    idiv    bx
    shld    di, si, 4
    shl si, 4
    or  si, dx
    test    ax, ax
    jnz @B
    mov dx, si
@@: mov al, dl
    and al, 0fh
    or  al, 30h
    shrd    dx, di, 4
    shr di, 4
    int 29h
    loop    @B
    ret
 
    end main
0
Jack_15
1 / 1 / 0
Регистрация: 13.09.2015
Сообщений: 56
14.05.2016, 15:06  [ТС] 6
спасибо! а что означает
Assembler
1
js @F
?
где эта метка?
0
Charles Kludge
Клюг
7646 / 3161 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
14.05.2016, 15:17 7
Цитата Сообщение от Jack_15 Посмотреть сообщение
где эта метка?
Давно бы знать пора, что @F(local forward) - это нижеследующая по коду локальная метка т.е.
Assembler
1
@@: mov ax, bx
сразу за int 29h, точно так же и @B - это вышеследующая по коду локальная метка, обозначаются они обычно @@:, а сделано это для того, чтобы программер не утонул в море меток.
2
14.05.2016, 15:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2016, 15:17

как вывести данные из регистра DS!
Здравствуйте, подскажите как вывести данные из регистра DS!! в emu8086

как вывести данные из регистра CS!
Здравствуйте, подскажите как вывести данные из регистра CS!! в emu8086

Как в ollyDBG как изменить значение регистра EIP?
Посмотрите пожалуста, у меня стоит бряк сразу на первой строке MessageBox-а,...


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

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

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