Assembler - язык неограниченных возможностей


Вычисления с плавающей запятой - часть 4


putpixel1b proc near pusha ; сохранить регистры push bx xor bx,bx mov ax,dx ; AX = номер строки imul ax,ax,80 ; AX = номер строки * число байт в строке push cx shr сх,3 ; СХ = номер байта в строке add ax,cx ; АХ = номер байта в видеопамяти mov di,ax ; поместить его в DI и SI mov si,di pop сх ; СХ снова содержит номер столбца mov bx,0080h and cx,07h ; последние три бита СХ = ; остаток от деления на 8 = ; номер бита в байте, считая справа налево shr bx,cl ; теперь в BL установлен в 1 нужный бит lods es:byte ptr ix ; AL = байт из видеопамяти pop dx dec dx ; проверить цвет: js black ; если 1 - or ax,bx ; установить выводимый бит в 1, jmp short white black: not bx ; если 0 - and ax,bx ; установить выводимый цвет в 0 white: stosb ; и вернуть байт на место рора ; восстановить регистры ret ; конец putpixel1b endp

m dw 1 ; начальное значение m с_100 dw 100 ; масштаб по вертикали hinv dw 32 ; начальное значение 1/h ix: ; начало буфера для значений x(t) ; (всего 1280 байт за концом программы) end start





Начало  Назад  Вперед