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

Вывести на экран содержимое байта по адресу ‘perem’ в виде двух шестнадцатеричных чисел

27.04.2013, 18:23. Просмотров 677. Ответов 3
Метки нет (Все метки)

Вывести на экран содержимое байта по адресу ‘perem’ в виде двух шестнадцатеричных чисел:
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
 TITLE  example_8
    .MODEL SMALL
    .STACK 10h
    .DATA
ascii  DB  '0123456789ABCDEF'
mesage DB  2 DUP(?)
       DB        13,10,'$'
perem       DB        98h
                    .CODE
begin:  mov ax,@DATA
        mov ds,ax
        mov al,perem
        mov ah,al
        and al,0F0h
        mov cl,4
        shr al,cl
        mov bl,al
        xor bh,bh
        mov al,ascii[bx]
        mov mesage,al
        and ah,0Fh
        mov bl,ah
        xor bh,bh
        mov l,ascii[bx]
        mov mesage+1,al
        mov dx,OFFSET mesage
        mov ah,09h
        int 21h
        mov ax,4C00h
        int 21h
 END  begin
Замечания:
– если значение некоторой тетрады находится между 0 и 9, то код ASCII соответствующей цифры можно получить, прибавляя значение 30h к значению тетрады.
– если значение некоторой тетрады находится между 10 и 15, то код ASCII соответствующей цифры можно получить, прибавляя значение 37h к значению тетрады
Переписать программу, используя вышеприведенные замечания.


ВОпрос вот какой, я не очень понимаю о каких тетрадах идёт речь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 18:23
Ответы с готовыми решениями:

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

Вычисление половины суммы двух 3-х байтных шестнадцатеричных чисел
помогите написать программу вычисления половины суммы двух 3-х байтных...

Вывести на экран в шестнадцатеричных кодах значения, содержащиеся в регистрах процессора 8086
Вывести на экран в шестнадцатеричных кодах значения, содержащиеся в регистрах...

Вывести на экран в шестнадцатеричных кодах значения, содержащиеся в регистрах процессора 8086
написать программу, которая выводит на экран в шестнадцатеричных кодах...

Ввод двух чисел A и B. Результат A/B вывести на экран
http://pastebin.com/raw.php?i=ywkx332H все что у меня вышло на выходе идет...

3
Troll_Face
603 / 403 / 8
Регистрация: 26.04.2012
Сообщений: 2,069
27.04.2013, 22:42 2
курите xlatb.
Assembler
1
2
3
4
5
6
7
8
9
10
mov bx, offset ascii
mov al, perem
push ax
shr al, 4
xlatb
int 29h
pop ax
and ax, 0fh
xlatb
int 29h
Добавлено через 1 минуту
Цитата Сообщение от Smer4ik Посмотреть сообщение
ВОпрос вот какой, я не очень понимаю о каких тетрадах идёт речь.
тетрада это 4 бита. или одна 16ричная цифра
0
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,537
28.04.2013, 04:44 3
Smer4ik,
посмотри здесь — 26 вариантов перевода hex-числа в ASCII-строку
Цитата Сообщение от Smer4ik
я не очень понимаю о каких тетрадах идёт речь
тетра — греческий "четыре", группа из четырех бит, она же "тетрада", она же "полубайт", она же "нибл"
0
Smer4ik
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 6
28.04.2013, 13:50  [ТС] 4
Mikl___,
Fatal Error,
Спасибо, теперь разобрался )
Сделал так как в примере здесь
Только изменил под 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
29
30
31
32
33
34
35
36
37
38
TITLE  example_8
    .MODEL SMALL
    .STACK 10h
    .DATA
perem       DB        2Ch
mesage DB  2 DUP(?)
       DB        13,10,'$'
 
     .CODE
begin:  mov ax,@DATA
        mov ds,ax
        
    mov al,perem;заносим в регистр число
    mov cx,2;количество повторов цикла для loop
    mov si,0; счётчик
    pv:;метка
    rol al,4;сдвигаем влево исходное число
    mov di,ax;сохраняем исходные цифры
    and al,0fh;помещаем в регистр ax число 000fh
    ;Вывод на экран
    cmp al,10;сравниваем с 10, чтобы знать буква это или цифра от 0-9
    jb dig;Переход на метку если не равно 10
    add al,7;прибавляем 7 к регистру al
    dig:
    add al,30h;прибавляем 30
    mov mesage+si,al
    inc si;
    mov ax,di;достаём изначальный код
    loop pv;переход на метку pv что бы данный кусок повторялся
    mov dx,OFFSET mesage
    
    mov ah,9
    int 21h
    mov ah, 1 
    int 21h 
    mov ax,4C00h
    int 21h
END  begin
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 13:50

Вывести на экран сумму двух введенных с клавиатуры двузначных чисел
Вывести на экран сумму двух введенных с клавиатуры двузначных чисел (вводить...

Вывести на экран произведение двух однозначных чисел (запрещена команда MUL)
Вывести на экран произведение двух однозначных чисел.Числа вводятся с...

Вывести содержимое массива на экран монитора в заданном виде
Кто такие решать умеет - помогите братва! 1.Заполнить одномерный массив из...


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

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

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