打印" graphics var"在我的项目 - 组件8086中

时间:2017-04-24 15:52:53

标签: assembly x86-16

我在Windows上的DOSBOX中使用程序集8086。 我试图打印一个特定的"对象"到我的屏幕,但它没有工作。 我打印一个16X16 var,例如:

pic1    db 4,4,0,0,0,0,0,4,4,0,0,0,0,0,4,4 ;**     **     **│
        db 0,4,0,0,0,4,4,4,4,4,4,0,0,0,4,0 ; *   ******   * │
        db 0,4,4,0,0,4,4,4,4,4,4,0,0,4,4,0 ; **  ******  ** │
        db 0,4,4,0,0,0,0,4,4,0,0,0,0,4,4,0 ; **    **    ** │
        db 0,4,4,0,0,0,0,4,4,0,0,0,0,4,4,0 ; **    **    ** │
        db 0,0,0,4,4,4,0,4,4,0,4,4,4,0,0,0 ;   *** **  ***  │
        db 0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0 ;      ****      │
        db 0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0 ;     ******     │
        db 0,0,0,0,4,4,0,0,0,0,4,4,0,0,0,0 ;    **    **    │
        db 0,0,0,4,4,0,0,0,0,0,0,4,4,0,0,0 ;   **      **   │
        db 0,0,0,4,4,0,0,0,0,0,0,4,4,0,0,0 ;   **      **   │
        db 0,0,0,4,4,0,0,0,0,0,0,4,4,0,0,0 ;   **      **   │
        db 0,0,0,0,4,4,0,0,0,0,4,4,0,0,0,0 ;    **    **    │
        db 0,0,4,4,4,4,0,0,0,0,4,4,4,4,0,0 ;  ****    ****  │
        db 0,0,4,4,4,4,0,0,0,0,4,4,4,4,0,0 ;  ****    ****  │
        db 0,0,4,4,4,4,0,0,0,0,4,4,4,4,0,0 ;  ****    ****  │

我的打印代码如下:

    IDEAL
MODEL small
STACK 100h
DATASEG
include 'pic1.asm'
; --------------------------
; Your variables here
; --------------------------
    positionX dw 1
    positionY dw 1

    color db ?


;--------------------------------------

CODESEG
; --------------------------
; Your code here - Procedures
; --------------------------
;---------------------------
    proc print
    push  cx bx  

    mov bh,0
    mov cx,[positionX]
    mov dx,[positionY]
    mov al,[color]

    mov ah,0ch                  ; the print
    int 10h

    pop  bx cx

    ret
    endp print
    ;---------------------------

start: 

    mov ax, 13h                 ;graphics mode
    int 10h

    mov si, offset pic1
    xor bx,bx


    mov cx,16d

Print_line_ofx:

    mov al, [si+bx]
    mov [color], al

    call print

    add bx,1
    add [positionX],1

    loop Print_line_ofx

    mov cx,16d
    mov [positionX],1
    add [positionY],1

    cmp [positionY],16d
    jne Print_line_ofx

; Wait for key press
    mov ah, 0h
    int 16h

; Return to text mode
    mov ah, 0
    mov al, 2
    int 10h

exit:
    mov ax, 4c00h
    int 21h
END start

它甚至不打印一个像素!

我知道我不擅长汇编程序,有人可以帮助我并修改我的代码,以便将我的var打印到我的屏幕上吗?

0 个答案:

没有答案