Привет, я сделал программу, которая будет вращать два символа - \ и /, но я не знаю, как установить cx counter в вложенных циклах, может кто-нибудь дать мне совет или помочь мне?Сборка x86 Задержка цикла
здесь код той части
program:
mov ah, 0fh ; function - get video mode
int 10h
push ax ; save number of columns
push bx ; save page number
mov ah, 0 ; function - set video mode
int 10h
mov al, 0003h ;set video mode
int 10h
mov cx,10d ; Outer loop counter how many symbols rotate
mov bx,50d ; this is for delay loop
OuterLoop:
push cx
mov ah,02h
mov bh, 0 ;cursor set
mov dh, 2
mov dl, 10
int 10h
mov AH,0Ah
mov al,"/" symbol/
mov bh,0
mov cx,1
int 10h
mov cx,bx
call Delay ;delay loop
sub bx,15d
mov ah,02h
mov bh, 0
mov dh, 2 cursor set
mov dl, 10
int 10h
mov AH,0Ah
mov al,"\" ;symbol \
mov bh,0
mov cx,1
int 10h
mov cx,bx
call Delay ; another delay
sub bx,10
pop cx ; Restore current CX
loop OuterLoop
jmp START ; and after end it should jump to start where is menu with choices
он должен работать, как эта задержка
записи/ , например, 10 сек записи \ задержка 8 сек и перейти к началу и петли
это м у задержка процедура
Delay PROC NEAR ;
push ds ;
push si ;
push ax ;
xor ax, ax ;AX = 0
mov ds, ax ;DS = 0
mov si, 046Ch ;
t1: mov ax, [si] ;
t2: cmp ax, [si] ;
je t2 ;
loop t1 ;
pop ax ;
pop si ;
pop ds ;
ret ;
Delay ENDP ;
я все еще работаю над этим приложением, но он не работает все мне нужно, это шаги, которые будут сделаны
программа: начало цикла \ задержки задержки в 100 раз / задержка задержки 80 раз петля и после каждого цикла, чтобы уменьшить задержку, как это 100 раз 80,60,40 и так далее, но я не знаю, куда положить push и pop cx, потому что моя процедура задержки работает с cx. я просто устанавливаю cx, например, до 100, и это задерживает и так далее.
Насколько точна ваша задержка? Требуется ли программе Задержка такой же суммы в режиме настенных часов на процессорах с разными тактовыми частотами процессора (ГГц)? – amdn
Нет, я не хочу точной задержки, как 5 секунд 4 и так далее, просто задержка. я хочу записать/задержать, например, 10 секунд, а затем \ и задержать 8 секунд, и зациклировать это и уменьшить количество секунд, когда я выложу процедуру задержки, если вы хотите –
Конечно, продолжайте и отправляйте свою процедуру задержки. – amdn