Ассемблер-задача - 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

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы