Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 16

Вывод на экран

13.02.2012, 02:51. Показов 1403. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Преобразовать двухзначное шестнадцатеричное число, введеное с клавиатуры, в двоичное его представление (с помощью команды XLAT).


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
data segment para public 'data'; сегмент данных
message db  '‚Write number,$'
tabl    db  48 dup (0),0,1,2,3,4,5,6,7,8,9, 8 dup (0), 
        db  0ah,0bh,0ch,0dh,0eh,0fh,27 dup (0)
        db  0ah,0bh,0ch,0dh,0eh,0fh, 153 dup (0)
data ends
stk segment stack
       db 256 dup('?');сегмент стека*
stk ends
code segment para public 'code';начало сегмента кода
main proc   ;начало процедуры main
    mov ax,data ;физический адрес сегмента данных в регистр ax
    mov ds,ax   ;ax записываем в ds
    lea bx,tabl ;загрузка адреса строки байт в регистр bx
    mov ah,9
    mov dx,offset message
    int 21h ;вывести приглашение к вводу
    xor ax,ax   ;очистить регистр ax
    mov ah,1h   ;значение 1h в регистр ah
    int 21h ;вводим первую цифру в al
    xlat        ;перекодировка первого введенного символа в al
    mov dl,al
    shl dl,4    ;сдвиг dl влево для освобождения места для младшей цифры
    int 21h ;ввод второго символа в al
    xlat    ;перекодировка второго введеного символа в al
    add al,dl   ;складываем для получения результата*
        mov ah,02h      
        mov dl,26       
        int 21h         
        mov cx,8        
        mov ah,02h      
    int 21h         
    mov ax,4c00h    ;пересылка 4c00h в регистр ax
    int 21h ;завершение программы
endp  main      ;конец процедуры main
ends  code  ;Є®*Ґж ᥣ¬Ґ*в* Є®¤*
end   main      ;конец программы с точкой входа main

не могу понять,почему не выводит двоичное представление((
помогите пожалуйста))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2012, 02:51
Ответы с готовыми решениями:

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е задание. Первая проблема в том, что вывод на...

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

Сгенерировать и вывести на экран массив с 10 случайных чисел в диапазоне от -100 до 100. Цикличный сдвиг массива влево на 1 и вывод на экран
Помогите написать программку в Паскале, что сгенерирует и выведет на экран массив с 10 случайных чисел в диапазоне от -100 до 100. Делает...

3
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.02.2012, 05:03
alenik, а каким образом должно выводится двоичное представление если программой это не предусмотрено?
Assembler
1
2
3
4
5
6
7
8
9
       add al,dl   ;результат в AL, а что с ним будут делать дальше?
       mov ah,02h; выводим символ с кодом 26=1A hex соответствует символу "стрелка вправо"             
       mov dl,26               
       int 21h                 
       mov cx,8  ; а это зачем?              
       mov ah,02h; снова выводим на экран "стрелочку"              
       int 21h                 
       mov ax,4c00h        ;пересылка 4c00h в регистр ax
       int 21h     ;завершение программы
1
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 16
13.02.2012, 16:55  [ТС]
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
data segment para public 'data';сегмент данных
 tabl db 48 dup('I'),0,1,2,3,4,5,6,7,8,9, 7 dup ('I')
      db 0ah,0bh,0ch,0dh,0eh,0fh, 26 dup ('I')
      db 0ah,0bh,0ch,0dh,0eh,0fh, 152 dup ('I') 
mes db 10,"Write 2 (16) numbers ",10,"$"
data ends
stk segment stack
       db 256 dup('?');сегмент стека
stk ends
code segment para public 'code';начало сегмента кода
main proc           ;начало процедуры main
b1:       assume cs:code,ds:data,ss:stk
    mov ax,data     ;инициализация регистра ds
    mov ds,ax       ;через регистр ax
    lea bx,tabl     ;загрузить относительный адрес псевдо-таблицы кодов
    mov ah,09h      ;пересылаем в ah номер функции - вывод строки на экран
    lea dx,mes      ;загрузить относительный адрес строки
    int 21h         ;вызов прерывания с номером 21h(возврат управления операционной системе)
    xor ax,ax       ;очищаем регистр ах
    mov ah,1h       ;пересылаем в ah номер функции - ввод символа в консоли
    int 21h         ;вызов прерывания с номером 21h(возврат управления операционной системе)
    xlat            ;трансляция байта номер ах из псевдо-таблицы кодов в регистр ах
    cmp al,49h      ;сравнить (al) с 49h (проверить, что код символа РАВЕН?? 49h) 
    je b1           ;перейти на метку b1 если al=49 наверное
    mov dl,al       ;сохраняем в dl промежуточный результат
    shl dl,4        ;сдвигом на четыре бита влево освобождаем место в dl для следующей цифры
    int 21h         ;вызов прерывания с номером 21h(возврат управления операционной системе)
    xlat            ;трансляция байта номер ах из псевдо-таблицы кодов в регистр ах
    cmp al,49h      ;сравнить (al) с 49h (проверить, что код символа РАВЕН?? 49h)   
    je b1           ;перейти на метку b1 если al=49h наверное
    mov cx,8        ; 
    add dl,al       ;сложение: (dl)=(dl)+(al)
    
a2:     ;определение метки а2
    shr dl,1        ;сдвигом на один бит вправо ....незнаю зачем((
    jc a1           ;
    push 30h        ;заносит в стек 
    jmp a3          ;безусловный переход...
a1:     ;определение метки а1
    push 31h        ;заносит в стек
a3:     ;определение метки а3
    loop a2         ;
    mov ah,02h      ;функция DOS вывода на экран
    mov dl,26       ;код символа "->"
    int 21h         ;вызов прерывания с номером 21h(возврат управления операционной системе)
    mov cx,8        ;заносит в сх значение 8, счетчик цикла
    mov ah,02h      ;функция DOS вывода на экран
a4:     ;определение метки а4  
    pop dx          ;извлечение значения регистра из стека
    int 21h         ;вызов прерывания с номером 21h(возврат управления операционной системе)
    loop a4         ;
    mov ah,4ch      ;
    int 21h         ;функция DOS завершения программы 
endp main           ;конец процедуры main
ends code           ;конец сегмента кода
end main            ;конец программы с точкой входа main

вот есть такой вариант...
подскажите пожалуйста,можно ли сделать вывод проще??
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
14.02.2012, 05:55
alenik,
Assembler
1
2
shr dl,1                ;сдвигом на один бит вправо ....незнаю зачем((
        jc a1                   ;
за счет сдвига можно понять что находится в очередном разряде ноль (CF=0) или единица (CF=1), вообще в сообщении #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
        mov ax,data     ;физический адрес сегмента данных в регистр ax
        mov     ds,ax   ;ax записываем в ds
        lea     bx,tabl ;загрузка адреса строки байт в регистр bx
        mov     ah,9
        mov     dx,offset message
        int     21h     ;вывести приглашение к вводу
        mov     ah,1h   ;значение 1h в регистр ah
        int     21h     ;вводим первую цифру в al
        xlat            ;перекодировка первого введенного символа в al
        mov     dl,al
        shl     dl,4    ;сдвиг dl влево для освобождения места для младшей цифры
        int     21h     ;ввод второго символа в al
        xlat    ;перекодировка второго введеного символа в al
        add     dl,al   ;складываем для получения результата*
        mov cx,8; наше число содержит 8 нулей или единиц        
a0:   shl dl,1; сдвигаем по одному биту
        mov al,'0'; в AL символ нуля
        adc al,0; если был перенос во время сдвига из DL, тогда в AL символ единицы
        int 27h; выводим содержимое AL на экран
        loop a0; повторяем 8 раз
        mov ah,0
        int 16h;ждем нажатия на любую клавишу
        mov ah,4ch              ;
        int 21h                 ;функция DOS завершения программы
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2012, 05:55
Помогаю со студенческими работами здесь

Создание сценария,обеспечивающего вывод на экран содержимого окна "Экран"
Прошу помощи в создании сценария так как попросту не знаю VBScript. =( Может кто имел дело с таким условием. Заранее благодарю.=)

Вывод на экран чётных слов строки исправить на вывод нечётных слов
#include<conio.h> #include<iostream.h> #include<string.h> #include<stdio.h> int i,l,j,k,p,n; char txt; char a,b; main() { ...

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

Вывод на экран
После второго отсортированного массива на экран ничего не выводит Хотя в файл всё записывает Как исправить ?

Вывод на экран
Здравствуйте товарищи! Начинаю изучать Shell. Подскажите новичку, как правильно сделать такое, казалось бы простое задание: Вывести на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru