こんにちは、\ と / の 2 つのシンボルをローテーションするプログラムを作成しましたが、ネストされたループで cx カウンターを設定する方法がわかりません。
ここにその部分のコードがあります
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
このように動作するはずです
write / delay for example 10 sec write \ delay 8 sec そして先頭にジャンプしてループ
アドバイスをありがとう
これが私の遅延手順です
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などに減らしますが、遅延手順があるため、cxをプッシュおよびポップする場所がわかりませんcxで作業しています。たとえば cx を 100 に設定すると、遅延などが発生します。