2013-06-24 55 views
0

我使用這個代碼打印線寬動態寬度:使用dup()重複X次字符?

mov cx, width 
sep_1: 
    PRINT '-' 
loop sep_1 

對於我的理解應該可以做這樣的事情,但是我沒有設法使其工作:

move ax, width 
CALL PTHIS 
DB 13, 10, ax dup('-'), 0 

是否有可能使其縮短?

+0

不能使用運行時表達式等的寄存器值作爲操作數以'dup'。 「dup」的計數需要在彙編程序運行時進行評估。 –

+0

那麼沒有辦法縮短它?我真的需要縮短它,因此每條線都很重要。 – lisovaccaro

+1

可能有,但不是這樣。 'dup()'是彙編器的指令,而不是CPU。 – duskwuff

回答

1

您的第一個代碼是正確的方法。宏在裝配過程中展開,在運行時不能使用「dup」宏,因此方法2不正確。

0

火災「-----」到ES:DI

mov ax,"-" 
mov cx,5 
rep stosb