开发者

Need help with Assembler Video Mode

开发者 https://www.devze.com 2023-02-23 03:55 出处:网络
I am doing some coding for my class and I think I am on the right track but I am having a problem with verticle lines. When I run this code it draws 2 lines horizontal at the same time in the same exa

I am doing some coding for my class and I think I am on the right track but I am having a problem with verticle lines. When I run this code it draws 2 lines horizontal at the same time in the same exact place but I need line 2 to move from 50,50 to 50,75 vertically instead of from 50, 50 to 75,50 horizontally. I am not asking for the answer I just need a nudge and explanation, thanks:

; video.asm
; uses interrupts to set video mode and draw a line

include 'emu8086.inc'

org  100h ; set location counter to 100h

jmp CodeStart

DataStart:
    xStart1 dw 50        ; x coordinate of line start 1
    yStart1 dw 50        ; y coordinate of line start 1
    xStart2 dw 50        ; x coordinate of line start 2
    yStart2 dw 50        ; y coordinate of line start 2
    length dw 开发者_Python百科25        ; length of line

CodeStart:

    ; set the video mode 320x200, 256 colors
    mov al, 13h
    mov ah, 0
    int 10h

    ; initialize cx (x coord) to xStart1 + length
    ; initialize bx (y coord) to yStart2 + length
    mov cx, xStart1
    mov bx, yStart2
    add cx, length
    add bx, length


    ; loop from (xStart1+length) to xStart1 to draw a horizontal line
    ; loop from (yStart1+length) to yStart1 to draw a vertical line
    LoopStart:    

        ; draw a pixel
        ; set color in al, x in cx, y in dx
        mov al, 50
        mov dx, yStart1

        ; set sub function value in ah to draw a pixel
        ; and invoke the interrupt
        mov ah, 0ch
        int 10h

        ; decrement the x coord for line 1
        ; decrement the y coord for line 2
        sub cx, 1
        sub bx, 1

        ; test to see if x coord has reached start value
        cmp cx, xStart1

    ; continue loop if cx >= xStart1
    jae LoopStart

    ret


Instead of keeping y constant and varying x, keep x constant and vary y

0

精彩评论

暂无评论...
验证码 换一张
取 消