2013-09-26 1 views
0

Nous avons notre activité TASM pour produire une figure en utilisant BOUCLE malheureusement personne n'a eu le bon code, donc notre professeur faire comme nos devoirs.TASM caractères Looping (ligne et col)

A

B C

D E F

G H I J

K L M N O

mon code est ici

@m macro row,col,char 
mov ah,02 
mov dl,char 
int 21h 

mov ah,02 
mov dh,row 
mov dl,col 
int 10h 
endm 



cseg segment para 'code' 
assume cs:cseg, ss:cseg, ds:cseg, es:cseg 
org 100h 

start: jmp begin 
char1 db 'A' 
col1 db 2 
row1 db 0 

begin: mov ax,0003 
int 10h 

mov cx,15 

repeat: @m row1,col1,char1 
     add col1,2 
     add char1,1 
     loop repeat 

    int 20h 
    cseg ends 
    end start 

Répondre

0

Ajouter un autre compteur (soit un registre ou une variable) qui commence avec la valeur 0. Après l'impression d'un caractère, augmenter le compteur de 1 et vérifier si elle est supérieure à row1. Le cas échéant, augmenter row1 par 1, remettre le compteur à 0 et remettre col1 Retour à 2.

(Vous pouvez également faire une comparaison entre col1 et row1 si vous ne voulez pas utiliser un compteur supplémentaire, mais cela impliquerait de l'arithmétique supplémentaire, alors j'ai choisi la méthode la plus simple). Par ailleurs, vous voudrez probablement changer l'ordre entre int 21h et int 10h dans votre macro afin que la première lettre (A) soit positionnée correctement.

Questions connexes