necrosy
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору mov ax,0B800h ; в ах пихается сегмент видеопямяти mov es,ax ; для того чтобы поместить в es mov di,0 ; сбросили di (чтобы точка назначения stosb(w) es:di соотвествовала началу буффера) mov es:[di],ax ; непонятно зачем сегмент пишется в начало буффера std ;сбрасываем флаг направления mov cx,10 ; сх = 10 Repeat: xor dx,dx ; dx = 0 div cx ;зачем-то делим dx:ax на сх (dx - остаток, частное ах) xchg ax,dx ; меняем местами dx,ax (аx - остаток, частное dх) add al,'0' ; складываем остаток с кодом символа '0' stosb ; выплевываем содержимое al в видеопамять, увеличиваем di xchg ax,dx ; меняем обратно (dx - символ остатока, частное ах) or ax,ax ; проверяем закончились ли у нас цифирки ) jne Repeat вывыд, код заданию не соответствует 1) нету никакого упоминания о регистре флага (напиример pushf/pop ax), надо всталять в самом начале чтобы не похерить его 2) нужно сдвинуться на вторую строчку (mov di,160 вместо mov di,0), да и вообще надо бы сначала переключить режим в 80х25 через порты vga/vesa 3) вывод в видеопямять должен осуществляться словами (символ,цвет) а не байтами 4) присутствуют некие намеки на вывод 10-ричного числа (а не двоичного как заявлено) | Всего записей: 1 | Зарегистр. 13-05-2009 | Отправлено: 14:33 23-05-2010 | Исправлено: necrosy, 14:35 23-05-2010 |
|