ВУЗы и колледжи

Срочно нужна помощь в Tasm( язык ассемблер).

Написать программу сколько в массиве чисел больше 12h и меньше 0Ah. Массив байт.
title N88989952
ideal
model small

stack 100h

dataseg
  Msg1 db 'Дан массив длиной $'
  Msg2 db ':',13,10,36
  Msg3 db 13,10,10,'Кол-во искомых элементов: $'
  Seed dw ?
  Len dw ?
  Array dw ?
DataLen = ($ - Msg1 + 15) shr 4

codeseg
Start:
    startupcode
    mov ah,62h
    int 21h
    mov es,bx
    mov ah,4Ah
    mov bx,CodeLen+DataLen+10h
    int 21h
    call Randomize
    call Random stdcall,361
    add ax,40
    mov [Len],ax
    add ax,15
    shr ax,4
    mov bx,ax
    mov ah,48h
    int 21h
    mov [Array],ax
    mov es,ax
    mov ah,9
    lea dx,[Msg1]
    int 21h
    call OutDec stdcall,[Len]
    mov ah,9
    lea dx,[Msg2]
    int 21h
    mov cx,[Len]
    xor di,di
CreateLoop:
    call Random stdcall,256
    stosb
    call OutByteHex stdcall,ax
    loop CreateLoop

    mov cx,[Len]
    xor si,si
    mov bx,si
    mov dx,si
CountLoop:
    mov al,es:[si]
    inc si
    cmp al,0Ah
    jb Less
    cmp al,12h+1
    cmc
Less:
    rcl bl,1
    and bl,1
    add dx,bx
    loop CountLoop

    push dx
    mov ah,9
    lea dx,[Msg3]
    int 21h
    call OutDec

    mov ax,[Array]
    mov es,ax
    mov ah,49h
    int 21h
    xor ah,ah
    int 16h
    exitcode 0

proc OutDec stdcall uses dx bx, x :word
    mov ax,x
    mov bx,10
    xor dx,dx
    div bx
    test ax,ax
    jz OutDec2
    call OutDec stdcall, ax
OutDec2:
    mov al,dl
    or al,30h
    int 29h
    ret
endp

proc OutByteHex stdcall uses ax, x :byte
    mov al,20h
    int 29h
    int 29h
    mov al,x
    rol al,4
    call Hex
    mov al,x
    call Hex
    ret
endp

proc Hex
    and al,0Fh
    cmp al,9
    jbe Hex2
    add al,7
Hex2:
    add al,30h
    int 29h
    ret
endp

proc Random stdcall uses dx, n: word
    mov ax,[Seed]
    mov dx,75
    mul dx
    inc ax
    mov [Seed],ax
    mul n
    mov ax,dx
    ret
endp

proc Randomize
    mov ah,2Ch
    int 21h
    mov bx,60
    mov al,ch
    mul bl
    xor ch,ch
    add ax,cx
    mov cl,dh
    mov ch,dl
    mul bx
    add ax,cx
    mov [Seed],ax
    ret
endp
CodeLen = ($ - Start + 15) shr 4
    end

Назгуль Жусупова
Назгуль Жусупова
51 590
Лучший ответ