Використовуйте dup (), щоб повторювати символ X разів?

Я використовую цей код для друку динамічної ширини рядка ширини рядка:

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

Тому що я розумію, що можна зробити щось подібне, однак я не зумів це зробити:

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

Чи можна зробити його коротшим?

0
тоді неможливо зробити це коротшим? Мені дійсно потрібно скоротити це, тому важливо кожен рядок.
додано Автор lisovaccaro, джерело
тоді неможливо зробити це коротшим? Мені дійсно потрібно скоротити це, тому важливо кожен рядок.
додано Автор lisovaccaro, джерело
тоді неможливо зробити це коротшим? Мені дійсно потрібно скоротити це, тому важливо кожен рядок.
додано Автор lisovaccaro, джерело
Також зауважте, що кількість рядків не має значення, це результат відповідного коду. Зберігання газільних дефісів не буде менше, ніж машинний код циклу.
додано Автор Jester, джерело
Також зауважте, що кількість рядків не має значення, це результат відповідного коду. Зберігання газільних дефісів не буде менше, ніж машинний код циклу.
додано Автор Jester, джерело
Також зауважте, що кількість рядків не має значення, це результат відповідного коду. Зберігання газільних дефісів не буде менше, ніж машинний код циклу.
додано Автор Jester, джерело
Там, ймовірно, є, але не так. dup() - це інструкція для ассемблера, а не процесора.
додано Автор duskwuff, джерело
Там, ймовірно, є, але не так. dup() - це інструкція для ассемблера, а не процесора.
додано Автор duskwuff, джерело
Там, ймовірно, є, але не так. dup() - це інструкція для ассемблера, а не процесора.
додано Автор duskwuff, джерело
Ви не можете використовувати вираз runtime, як реєстроване значення, як операнд для dup . Для підрахунку dup необхідно щось оцінити під час запуску асемблера.
додано Автор Michael Burr, джерело
Ви не можете використовувати вираз runtime, як реєстроване значення, як операнд для dup . Для підрахунку dup необхідно щось оцінити під час запуску асемблера.
додано Автор Michael Burr, джерело
Ви не можете використовувати вираз runtime, як реєстроване значення, як операнд для dup . Для підрахунку dup необхідно щось оцінити під час запуску асемблера.
додано Автор Michael Burr, джерело

6 Відповіді

Ваш перший код є правильним способом зробити це. Під час збирання макроси розширюються, ви не можете використовувати макрос "dup" під час виконання, тому метод 2 невірний.

1
додано

Ваш перший код є правильним способом зробити це. Під час збирання макроси розширюються, ви не можете використовувати макрос "dup" під час виконання, тому метод 2 невірний.

1
додано

Ваш перший код є правильним способом зробити це. Під час збирання макроси розширюються, ви не можете використовувати макрос "dup" під час виконання, тому метод 2 невірний.

1
додано

Пожежі "-----" в ES: DI

 mov ax,"-"
 mov cx,5
 rep stosb
0
додано

Пожежі "-----" в ES: DI

 mov ax,"-"
 mov cx,5
 rep stosb
0
додано

Пожежі "-----" в ES: DI

 mov ax,"-"
 mov cx,5
 rep stosb
0
додано