Ассемблер-задача - Assembler
Формулировка задачи:
Ребят, написал код, он должен был выводить строки символов и перемещать снизу-вверх, а он наоборот делает, как исправить?
model small .stack 100h .data x db 0 c db 64 z db 5 sec db 0 .code p1 proc MOV AH,09 MOV AL,03 MOV BH,00 MOV BL,0020 MOV CX,05 INT 10H ret p1 endp p2 proc MOV AH,02 MOV BH,00 MOV DL,00 INT 10H ret p2 endp p3 proc MOV AH,09 mov al,20 MOV BH,00 MOV BL,000h MOV CX,05 INT 10H ret p3 endp p5 proc call p1 call timer call p3 add x,1 MOV DH,x call p2 ret p5 endp TIMER proc mov ah,2ch int 21h mov sec,dl n1: mov ah,2ch int 21h cmp sec,dl je n1 ret timer endp start: mov ax,@data mov ds,ax mov ax, 01 INT 10H m2: mov x,0 call timer m1: call p5 inc x cmp x,25 jb m1 dec z cmp z,0 ja m2 exit: mov ax, 4c00h int 21h end start
Решение задачи: «Ассемблер-задача»
textual
Листинг программы
model small .stack 100h .data x db 24 c db 64 z db 5 sec db 0 .code p1 proc MOV AH,09 MOV AL,03 MOV BH,00 MOV BL,0020 MOV CX,05 INT 10H ret p1 endp p2 proc MOV AH,02 MOV BH,00 MOV DL,00 mov dh,[x] int 3 INT 10H ret p2 endp p3 proc MOV AH,09 mov al,20 MOV BH,00 MOV BL,000h MOV CX,05 INT 10H ret p3 endp p5 proc call p1 call timer call p3 ; mov al,[x] ; int 3 ; add x,1 ; sub [x],1 ; MOV DH,[x] call p2 ret p5 endp TIMER proc mov ah,2ch int 21h mov sec,dl n1: mov ah,2ch int 21h cmp sec,dl je n1 ret timer endp start: mov ax,@data mov ds,ax mov ax, 01 INT 10H m2: mov [x],25 call timer m1: dec [x] call p5 ; inc x ; mov al,x ; int 3 cmp [x],0 jg m1 dec [z] cmp [z],0 ja m2 exit: mov ax, 4c00h int 21h end start