ВУЗы и колледжи
Срочно нужна помощь в 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

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

Похожие вопросы
- Русский язык. срочно нужна помощь!!! пожалуйста
- Очень нужна помощь с английским языком!
- Срочно нужен текст по английскому языку на тему Пасха в России
- Срочно!!!!Нужны пословицы на казахском языке о языке!!!
- СРОЧНО НУЖНА ПОМОЩЬ ПО РУССКОМУ!!!!Синтаксические нормы!!!Исправьте ошибки в предложениях или выберите нужный вариант!!!
- Очень нужна помощь учителя русского языка... Нужно отредактировать текст
- Срочно нужна помощь по химии!!!
- Добрый вечер! Срочно нужна помощь! помогите...
- Срочно! нужна помощь в остроении графика y=x^3-9x^2+24x-13
- Помогите с математикой. Срочно нужна помощь. Заранее спасибо Решить дефференциальное уравнение при y(п/2)=1 y'sinx=y lny