Коректирывание кода нужно добавить массив - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброе время суток! Нужна помощь.. Надо покоректирывать код в него нужно добавить массив чтобы код выдавалбы сколько каких символов есть в фаиле... Помогите разобраться... Работаю на EMU8086.
ORG 100h
START: 
;
    lea dx,text1
    mov ah,9
    int 21h
;-------------------
    lea dx,max
    mov di,dx
    mov ah,0ah  
    int 21h
    inc di      
    xor bx,bx
    mov bl,[di] 
    inc di      
    mov byte ptr [di+bx],0 
 
;FAILO ATIDARYMAS
    mov ah, 3Dh
    mov al,0    
    mov dx,di
    int 21h
    jc error

    mov bx,ax   
    mov si,ax   
    mov ah, 3fh
    lea dx,cc   
    mov cx,-1   
    int 21h
    test ax,ax  
    jz error
    mov cx,ax   
    mov di,dx   

    mov ah, 3eh
    int 21h
 
    lea dx,text2
    mov ah,9
    int 21h

    call Schet

    call Bin2ASCII   
error:
    lea dx,errst
    mov ah,9
    int 21h
exit:
    xor ax,ax   
    int 16h
    ret ;  
    
Bin2ASCII   proc    near
    mov     bx, 10
oi2:
    xor     dx,dx
    div     bx
    push    dx
    inc     cx
    test    ax, ax
    jnz     oi2
    mov     ah, 02h
oi3:
    pop     dx
    add     dl, '0'
    int     21h
    loop    oi3
    ret
Bin2ASCII   endp
;----------------------------
Schet   proc    near
    xor ax,ax   
m3:
 
    cmp byte ptr [di],00
    jl short m4
    cmp byte ptr [di],32
    je short m4  
    cmp byte ptr [di],255 
    ja short m4
    inc ax  
m4:    
    inc di           
    loop m3

ret
Schet   endp
 
;Duomenys
text1 db 'vedi faila nazvanije: $'
errst db 13,10,
text2   db 13,10,'vasam faile stolko simbolov: $'
 
cc:                
 
max db 80
len db ?
fname:
end start

Решение задачи: «Коректирывание кода нужно добавить массив»

textual
Листинг программы
MOV ecx,0
 
m3:
 
CMP byte [edi],'F'
INC edi
JZ inc_f
JMP m3
 
inc_f:
 
INC ecx
JMP m3

Объяснение кода листинга программы

В этом коде выполняется коррекция массива по определенному условию. Вот список шагов:

  1. MOV ecx,0 - в начале цикла устанавливается счетчик итераций в 0.
  2. m3: - это метка, которая обозначает начало цикла.
  3. CMP byte [edi],'F' - выполняется сравнение байта в памяти по адресу, который хранится в регистре edi, с символом 'F'.
  4. INC edi - если байт в памяти по адресу, который хранится в регистре edi, равен 'F', то этот адрес увеличивается на 1.
  5. JZ inc_f - если байт равен 'F', то выполняется переход на метку inc_f.
  6. JMP m3 - в противном случае выполняется переход на метку m3, чтобы продолжить цикл.
  7. inc_f: - это метка, которая обозначает операцию увеличения счетчика.
  8. INC ecx - если байт равен 'F', то счетчик увеличивается на 1.
  9. JMP m3 - после увеличения счетчика выполняется переход на метку m3, чтобы продолжить цикл.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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