Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2009, 18:25   #1
Lina__N
Новичок
Джуниор
 
Регистрация: 04.06.2009
Сообщений: 1
По умолчанию Печать двоичного представления числа в формате слова.

Добрый Вечер! Нашла у вас программку (которая почти совпадает с моим заданием) ,пыталась разобраться,но тут возникли определенные вопросы. Заранее благодарю всех тех,кто мне на них ответит. Я не являюсь специалистом в данной программе,даже скажем так-чайничек) вот задача: Даны 3 константы с фиксированной точкой в формате слова. Написать на Ассемблере программу печати двоичного представления этих констант и записать результат в файл. Мне не совсем понятен пункты 1),2)-для чего они? что еще за 32h? Зачем мы даем отдельно пояснения константам? Для чего 4),5). JMP образует внешний цикл? Тогда почему после пункта 7) не стоит jmp posl,для вывода 3-ей константы? Можно ли в пункте 8)DL заменить на DX? И что означает 10)? – адресу DI присваивается DL?-ЗАЧЕМ? ПРОСТИТЕ ЗА СТОЛЬ БОЛЬШОЕ КОЛИЧЕСТВО ВОПРОСОВ)) (ВОЗМОЖНО И ВЕСЬМА ГЛУПЫХ) Просто очень интересно!
Код:

Код:
.model SMALL
.STACK 100h
.DATA
const1 dw 15 ;pervaya konstanta
const2 dw 256 ;vtoraya
const3 dw 652 ;tretya
prigl db 'Constants in computer memory:','$' 
ctrl db 0Dh,0Ah,'$' ;Enter, toyest perexod na nachalo tekushey stroki i perexod kursora na odnu poziciyu vniz
con1 db ' 15 - ','$' ;Poyasneniye k pervoy konstante
con2 db ' 256 - ','$' ;... ko vtoroy
con3 db '652 - ','$' ;... k tretyey
1) handle dw ?
2) bufer db 32h dup(?)
file DB '1.txt',0
mes DB 'Oshibka', 0Ah, 0Dh,'$'
.CODE
start:
4) push @DATA
5) pop DS
MOV ah, 3Ch
mov CX, 2
LEA dx, file
int 21h
JC error
MOV handle, ax
mov ah,09h 
mov dx,offset prigl ;Vivesti priqlasheniye
int 21h 
mov ah,09h
mov dx,offset con1 ;Vivesti poyasneniye 1 konstanti
int 21h 
 
mov bx,const1 ;Kod 1-oy vivodimoy konstanti
mov cx,10h ;Schetchik cikla = 16 , t.e. 16 bit kajdoy konstanti
mov di,3 ;Schetchik dlya 3-x konstant
6 jmp posl
met1:
mov ah,09h
mov dx,offset con2 ;Vivesti poyasneniye 2 konstanti
int 21h
 
mov bx,const2 ;Kod 2-oy vivodimoy konstanti
mov cx,10h
jmp posl
met2:
mov ah,09h
mov dx,offset con3 ;Vivesti poyasneniye 3 konstanti
int 21h
mov bx,const3 ;Kod 3-yy vivodimoy konstanti
7) mov cx,10h
posl:
mov dx,30h ;v dx zanosim kod simvola 0
shl bx,1 ;sdviq soderjimoqo reqistra BX na 1 bit vlevo
8) adc dl,0 ;Slojeniye s uchetom flaqa CF, t.k skladivayem s nulem, to uchitivayetsa tut tolko flaq CF
int 21h
loop posl 
9) mov bx, handle
mov cx, 10h
mov ah, 40h
10) mov bufer[SI], dl
lea dx, bufer[SI]
int 21h
mov ah,09h
mov dx,offset ctrl ;Perevod stroki
int 21h 
dec di ;Umenshayem schetchik
cmp di,2 ;Smotrim di=2?
je met1 ;Da-perexod dlya vivoda 2 konstanti
cmp di,1 ;di=1?
je met2 ;Da-perexod dlya vivoda 1 konstanti
JMP SHORT zak
int 21h
zak:
MOV AH, 3Eh
MOV BX, handle
int 21h
JMP SHORT kones
;-------------------
error:
MOV AH,9
LEA DX, mes
int 21h
kones:
MOV AX, 4Ch
int 21h
end start

Последний раз редактировалось rpy3uH; 07.06.2009 в 21:34.
Lina__N вне форума Ответить с цитированием
Старый 06.06.2009, 12:06   #2
ASSEMBLER
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 27
По умолчанию

значит так:
пункт 1 объявляет переменную, пункт два выделяет буфер для хранения данных и 32h здесь это количество байт в этом буфере что в десятичной системе равно 50, в пунктах 4 и 5 помещаем в DS адресс сегмента данных, в пункте 10 помещаем по адресу значение из DL, а потом получаем в DX сам адресс, а вот по поводу 7 не понял, зачем нужен прыжок на следующую по коду команду? А коменда adc это просто сложение с переносом
Программы на заказ Delphi, Pascal, С++, Assembler e-mail: greatrock@mail.ru
<--Если я вам помог не забываем жать на весы

Последний раз редактировалось ASSEMBLER; 06.06.2009 в 12:14.
ASSEMBLER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Смена знака у двоичного числа Volchara Общие вопросы C/C++ 7 15.04.2009 16:55
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57
На печать выдать новую строку в которой все слова расположены в порядке возрастание длин слов Siluet Паскаль, Turbo Pascal, PascalABC.NET 1 13.12.2008 00:12
Алгоритм перевода двоичного числа в десятичное и обратно strab Общие вопросы Delphi 5 17.06.2008 21:33