Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 18
1

Вывод шестнадцатеричного числа

14.01.2012, 15:25. Показов 8633. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно вывести шестнадцатеричное число. Где то закралась ошибка, заданное число выводит в виде 1133, ткните пожалуйста где ошибся. Транслятор NASM
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
  org 100h
;===========================
 
test_write_word_hex:
  mov dx,1234h
  call write_word_hex
  int 20h
;===========================
 
write_word_hex:
 push dx
 xchg dh,dl
 call write_byte_hex
 xchg dh,dl
 call write_byte_hex
 pop dx
 ret
;=============================
 
write_byte_hex:
 push dx
 mov cl,04
 shr dl,cl
 call write_digit_hex
 and dl,0fh
 call write_digit_hex
 pop dx
 ret
;=============================
 
write_digit_hex:
 push dx
 cmp dl,09
 ja .g
 add dl,30
 jmp .h
.g add dl,37
.h call write_char
 pop dx
 ret
;=============================
 
write_char:
 push ax
 mov ah,02h
 int 21h
 pop ax
 ret
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2012, 15:25
Ответы с готовыми решениями:

[NASM+DOS+COM] Вывод двухзначного шестнадцатеричного числа
Народ выручайте, в коде вроде все правильно и по идее должен вывести 3f а выводит 33, может кто...

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

Преобразование двухзначного шестнадцатеричного числа в символьном виде в двоичное представление. Обработать и строчные.
Всем привет, совсем нуб в ассемблере. Нужно дописать программу преобразования двухзначного...

Определить,является ли введенная строка правильной записью целочисленного шестнадцатеричного числа без знака
Определить, является ли введенная строка правильной записью целочисленного шестнадцатеричного числа...

6
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
14.01.2012, 15:39 2
Цитата Сообщение от evgeshqa Посмотреть сообщение
mov dx,1234h
это круто
как в 16битную ячейку записать 32разрядную переменную

Добавлено через 1 минуту
Цитата Сообщение от evgeshqa Посмотреть сообщение
push dx
mov cl,04
shr dl,cl
а здесь кто маску будет ставить

Добавлено через 1 минуту
Цитата Сообщение от evgeshqa Посмотреть сообщение
add dl,30
значение 16 должно быть

Добавлено через 3 минуты
Цитата Сообщение от evgeshqa Посмотреть сообщение
add dl,37
а это что за волшебное число?
A =41h
a 61h
(или наоборот не помню точно)
1
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 18
14.01.2012, 15:45  [ТС] 3
Брр..извините, можно тогда немного теории к этому?
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
mov bx,1234
mov dl,bh
mov cl,04
shr  dl,cl
cmp dl,09
ja 
add dl,30
jmp 
add dl,37
mov ah,02
int 21
mov dl,bh
and dl,0f
cmp dl,09
ja
add dl,30
jmp 
add dl,37
int 21
mov dl,bl
mov cl,04
shr dl,cl
cmp dl,09
ja 
add dl,30
jmp
add dl,37
int 21
mov dl,bl
and dl,0f
cmp dl,09
ja
add dl,30
jmp 
add dl,37
int 21
int 20
Вот тоже самое, написанное в простом дебаге виндовс. Все выводит, как надо. Где и что я напутал?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
14.01.2012, 16:20 4
Цитата Сообщение от evgeshqa Посмотреть сообщение
mov dx,1234h
и

Цитата Сообщение от evgeshqa Посмотреть сообщение
mov bx,1234
не видишь разницу???
десятичное 1234 =4D2h
хотя с этим
Цитата Сообщение от ValeryS Посмотреть сообщение
mov dx,1234h
это круто
как в 16битную ячейку записать 32разрядную переменную
прошу пардона маху дал
это и есть 16 число
признаю

Добавлено через 2 минуты
Цитата Сообщение от evgeshqa Посмотреть сообщение
Брр..извините, можно тогда немного теории к этому?
а откуда ты это взял ????
здесь даже
Цитата Сообщение от evgeshqa Посмотреть сообщение
and dl,0f
написано как десятичное а не шестнадцатиричное

Добавлено через 6 минут
Цитата Сообщение от evgeshqa Посмотреть сообщение
jmp
???
Цитата Сообщение от evgeshqa Посмотреть сообщение
ja
????
куда перходим??
если бы ты написал
Assembler
1
2
3
4
5
6
cmp dl,09
 ja .g
 add dl,30h; код'0'
 jmp .h
.g add dl,37h; 0Ah+37h= 41 код A'
.h call write_char
то половина вопросов бы отпало
но по моему ты не разбираешься в десятичной и шестнадцетеричной записи

Добавлено через 6 минут
Цитата Сообщение от evgeshqa Посмотреть сообщение
shr dl,cl
call write_digit_hex
and dl,0fh
и вот она главная ошибка дубляж цифр
не видишь
dl =12

shr dl,cl
dl=1
and dl,0fh
dl=1
12 ты потерял при сдвиге
надо или в стек загнать или в другом регистре запомнить
1
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 18
14.01.2012, 16:21  [ТС] 5
Вариант из дебага написан мной, по университетской методичке) Он был предназначен для вывода шестнадцатеричных цифр. Но он правильный, а сейчас надо переделать, используя транслятор и в виде процедур.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
14.01.2012, 16:29 6
Цитата Сообщение от evgeshqa Посмотреть сообщение
Вариант из дебага написан мной, по университетской методичке
в дебагах числа шеснадцатеричные а в ассемблере надо подставлять к числу систему счисления
Цитата Сообщение от evgeshqa Посмотреть сообщение
Но он правильный,
особенно это
Цитата Сообщение от evgeshqa Посмотреть сообщение
ja
Цитата Сообщение от evgeshqa Посмотреть сообщение
jmp
адрес перехода где???
и я тебе уже указал на ошибку дублежа цифр
1
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 18
14.01.2012, 16:48  [ТС] 7
Извините, что запутал с адресами, не указал.

А про ошибку, дубляж цифр, спасибо! Действительно, добавил регистр, все заработало.)
0
14.01.2012, 16:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2012, 16:48
Помогаю со студенческими работами здесь

Определите, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака
Определите, является ли введенная строка правильной записью целого шестнадцатеричного числа без...

Ввести два числа Осуществить вывод меньшего числа, вывод большего числа
Помогите решить эти задачи Можно на чём угодно. Можно даже на Assembler вставках в C++ сделать...

Запись шестнадцатеричного числа
Здравствуйте. нужна помощь. понадобилось шестнадцатеричное представление числа, погуглил не нашел,...

Сложение десятичного и шестнадцатеричного числа
Привет. Есть проблемка. Не правильно складываются 2 числа в разных СС. А именно число K и &V1....


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

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