回 帖 发 新 帖 刷新版面

主题:朋友,帮我看看!

[color=FF0000]我想将屏幕清零后,利用光标移位的方法在第一行输出26个‘*’字符,可是执行时在屏幕上仅在第一行出现一个‘*’,不知道是哪里有问题,希望各位帮帮忙,谢谢![/color]

gb macro op1,op2
         mov bh,0
         mov dh,op1
         mov dl,op2
         mov ah,2
         int 10h
endm
sc macro op
         mov dl,op
         mov ah,2
         int 21h
endm

data     segment
;
data     ends
           
stack    segment  para stack'stack'
         db 64 dup(?)
stack    ends

code     segment
         assume cs:code,ds:data
start:   
         mov ax,data
         mov ds,ax
         mov ch,0
         mov cl,0
         mov dh,24
     mov dl,79
         mov bh,70
         mov al,0
         mov ah,6
         int 10h
         mov ch,0
         mov cl,0
         mov bl,26
loop_1:  gb ch,cl
         sc '*'
         inc cl
         cmp bl,cl
         jna loop_1

         mov ah,4ch
         int 21h
code     ends
         end start

回复列表 (共5个回复)

沙发

mov ch,0
         mov cl,0
         mov bl,26
loop_1:  gb ch,cl
         sc '*'
         inc cl
         cmp bl,cl
         jna loop_1
该作:
         mov ch,0
         mov cl,0
         mov bl,26
         gb ch,cl;这句是设置光标位置,如果参与循环,则每次都在0,0位置显示*
loop_1:  sc '*'
         inc cl
         cmp bl,cl
         jna loop_1
道理我已经写在上面了。现在应该可以了。

板凳

楼上的朋友,我试了还是不行呀,执行后还是一样。
     mov ch,0
         mov cl,0
         mov bl,26
loop_1:  gb ch,cl ;我是想设置光标循环,CL加一,这样光标就会向后移一位,在移动的位置上再输出一个‘*’,值到CL等于26
    sc '*'
         inc cl
         cmp bl,cl
         jna loop_1

3 楼

问题不在于gb ch, cl这一句,因为下面已经inc cl了,这一句没有错。

条件转移用错了,jna loop_1应为ja loop_1,因为是bl减cl。

4 楼

gb 
sc
是什么指令?谢谢!

5 楼

gb,sc是定义的两个宏

我来回复

您尚未登录,请登录后再回复。点此登录或注册