Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посмотрите код 
:(
    Опции темы
Steil
Дата 23.5.2010, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.5.2010

Репутация: нет
Всего: нет



Написать на ассемблере подпрограмму вывода на вторую строку экрана значения регистра флагов в двоичной системе счисления без использования прерываний DOS и BIOS (прямой записью в видеопамять) для процессора Intel 80x86.

mov ax,0B800h
mov es,ax 
mov di,0 
mov es:[di],ax 
std
mov cx,10 
Repeat:
xor dx,dx 
div cx 
xchg ax,dx 
add al,'0' 
stosb 
xchg ax,dx 
or ax,ax 
jne Repeat

Объясните кто-нибудь код этой проги и ход её выполнения. И вообще соответствует ли она выше написанному заданию? 
PM MAIL   Вверх
iff
Дата 23.5.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Нет, не соответствует


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Steil
Дата 23.5.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.5.2010

Репутация: нет
Всего: нет



Цитата(iff @ 23.5.2010,  11:46)
Нет, не соответствует

.model    tiny

color    equ    0bh        
    .code
    org    100h        
start:
    mov    ax,3        
    int    10h        

    mov    ax,0B800h    
    mov    es,ax                  

    mov    di,4*2        
                
    std            
    mov    ax,1234    
    call    print        

    mov    ah,0        
    int    16h

    mov    ax,4c00h    
    int    21h

print    proc            
    push    ax cx dx di    
    mov    cx,10        
Repeat:
    xor    dx,dx        
    div    cx        
    xchg    ax,dx        
    add    al,\'0\'        
    mov    ah,color    
    stosw            
    xchg    ax,dx        
    or    ax,ax        
    jne    Repeat        
    pop    di dx cx ax    
    ret
print    endp
    end    start

А этот???, если да, то объясни пожалйуста как он работает, если можно по подробней=/
PM MAIL   Вверх
iff
Дата 23.5.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Нет.

А выводится должно содержимое регистра флагов каким образом?
Одним числом (так: 0101010101010101)
Или конкретно флаг и его значение (так: CF=0 ZF=1 CF=1 ...)

Если одним числом, то можно так:
Код

        .MODEL  TINY
        .CODE
        ORG     100H
MAIN:
        PUSH    DS
        MOV     AX, 0B800H
        MOV     DS, AX
        PUSHF
        POP     AX
        MOV     DI, (1*80+0)*2
        MOV     CX, 10H
B10:    SHL     AX, 1
        JC      B20
        MOV     BYTE PTR [DI], '0'
        JMP     B30
B20:    MOV     BYTE PTR [DI], '1'
B30:    INC     DI
        INC     DI
        LOOP    B10
        POP     DS
E10:    RET
END     MAIN



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
iff
Дата 23.5.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Тут только есть один нюанс: если запускать в эмуляторе в ОС Windows, то работает не всегда (глюк в виндовсе). А вот например в ОС FreeDOS всё нормально.

для того что-бы в винде (точнее эмуляторе) работало тоже, можно добавить слебующий код в начале:
Код

mov ax, 0003h
int 10h

Он установит режим 03.
Но поскольку... 
Цитата

без использования прерываний DOS и BIOS 


Это сообщение отредактировал(а) iff - 23.5.2010, 20:04


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Steil
Дата 24.5.2010, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.5.2010

Репутация: нет
Всего: нет



Спасибо iff, ты офигенно помог!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.