Emu8086星号字符同时显示?

时间:2014-10-12 16:27:59

标签: assembly x86-16

我一直在处理我的代码,我只是想问一下如何按行同时显示星号?我正在制作一个星号三角形,例如第一行" *"第二排" ***"这是我要理解的代码。

org     100h   



mov     ax, 3
int     10h

mov     ax, 1003h
mov     bx, 0      
int     10h




mov     dl, 0   
mov     dh, 0   

mov     bl, 0   

jmp     next_char

next_row:
inc     dh
cmp     dh, 16
je      stop_print
mov     dl, 0

next_char:


mov     ah, 02h
int     10h




mov     bh, 0
mov     cx, 7
mov     ah, 09h
int     10h

inc     bl      ; next attributes.





; set cursor at (dl,dh):
mov     dl, 0  ; column.
mov     dh, 0   ; row.
mov     ah, 02h
int     10h        




mov dl, 10 
int 21h    
mov dl, ' ' 
int 21h    
mov dl, ' ' 
int 21h   
mov dl, ' ' 
int 21h    
mov dl, ' ' 
int 21h  
mov dl, '*' 
int 21h

mov dl, 08  
int 21h
mov dl, 08 
int 21h
mov dl, 13 
int 21h
mov dl, 00 
int 21h    

mov dl, 10        ;new line
int 21h   
mov dl, ' ' 
int 21h    
mov dl, ' ' 
int 21h 
mov dl, '*' 
int 21h
mov dl, '*'
int 21h
mov dl, '*' 
int 21h
mov dl, 08  
int 21h
mov dl, 08 
int 21h
mov dl, 13 
int 21h
mov dl, 00 
int 21h    

mov dl, 10        ;new line
int 21h    
mov dl, ' ' 
int 21h    
mov dl, '*' 
int 21h
mov dl, '*'
int 21h
mov dl, '*' 
int 21h    
mov dl, '*' 
int 21h
mov dl, '*' 
int 21h
mov dl, 08  
int 21h
mov dl, 08 
int 21h
mov dl, 13 
int 21h
mov dl, 00 
int 21h  

mov dl, 10        ;new line
int 21h    
mov dl, '*' 
int 21h
mov dl, '*'
int 21h
mov dl, '*' 
int 21h    
mov dl, '*' 
int 21h
mov dl, '*' 
int 21h   
mov dl, '*' 
int 21h 
mov dl, '*' 
int 21h
mov dl, 08  
int 21h
mov dl, 08 
int 21h
mov dl, 13 
int 21h
mov dl, 00 
int 21h    








;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov     dl, 1  ; * column position.
mov     dh, 1   ;  row position.
mov     ah, 02h
int     10h     


mov     bh, 0
mov     cx, 6
mov     ah, 09h
int     10h

inc     bl    


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                      
mov     dl, 1  ; *** column position.
mov     dh, 2  ; row position.
mov     ah, 02h
int     10h     


mov     bh, 0
mov     cx, 6
mov     ah, 09h
int     10h

inc     bl      

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

mov     dl, 1  ; ***** column position.
mov     dh, 3   ; row position.
mov     ah, 02h
int     10h     


mov     bh, 0
mov     cx, 6
mov     ah, 09h
int     10h

inc     bl 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  


mov     dl, 1  ; ******* column position.
mov     dh, 4   ; row position.
mov     ah, 02h
int     10h     


mov     bh, 0
mov     cx, 7      ;
mov     ah, 09h
int     10h

inc     bl    




je      next_row
jmp     next_char

stop_print:


mov     dl, 10  ; column.
mov     dh, 5   ; row.
mov     ah, 02h
int     10h




mov ah, 0
int 16h


ret

1 个答案:

答案 0 :(得分:1)

我想你要求简化这个序列

mov dl, '*' 
int 21h
mov dl, '*'
int 21h
mov dl, '*' 
int 21h    
mov dl, '*' 
int 21h
mov dl, '*' 
int 21h   
mov dl, '*' 
int 21h 
mov dl, '*' 
int 21h

一个简单的循环将完成工作

push cx
mov cx,7
again:
mov dl,'*'
int 21h
loop again
pop cx