【问题标题】:TASM Looping characters (row & col)TASM 循环字符(行和列)
【发布时间】:2013-09-26 11:48:11
【问题描述】:

我们在 TASM 中使用 LOOPING 输出一个数字,不幸的是没有人得到正确的代码,所以我们的教授把它作为我们的家庭作业。

一个

B C

D E F

G H I J

K L M N O

我的代码是

@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

【问题讨论】:

    标签: loops assembly tasm


    【解决方案1】:

    添加另一个以 0 开头的计数器(寄存器或变量)。打印一个字符后,将计数器加 1 并检查它是否大于row1。如果是,则将row1 增加 1,将计数器重置回 0,并将 col1 重置回 2。

    (如果您不想使用额外的计数器,也可以在col1row1 之间进行比较,但这会涉及一些额外的算术,所以我选择了最简单的方法。

    顺便说一下,您可能需要更改宏中 int 21hint 10h 之间的顺序,以便正确定位第一个字母 (A)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多