Вопрос № 183488: Здравствуйте! Прошу помощи в следующем вопросе:требуется написать 3 варианта заданной подпрограммы ( на встроенном ассемблере, с использованием модели памяти PASCAL (листинг) и без использования директивы MODEL (листинг)). Программу, вызывающую эти п...
Вопрос № 183488:
Здравствуйте! Прошу помощи в следующем вопросе:требуется написать 3 варианта заданной подпрограммы ( на встроенном ассемблере, с использованием модели памяти PASCAL (листинг) и без использования директивы MODEL (листинг)). Программу, вызывающую эти подпрограммы с указанием автора и варианта задания (26-ый). Задание- подсчитать количество элементов >x в массиве Byte[n]. АСС- TASM. Очень рассчитываю на Вашу помощь ...
const
n=10;
type
tmass=array[1..n]of byte;
var
a:tmass;
b,x:byte;
function FA(var q:tmass;w,e:byte):byte;
begin
asm
lds si,dword ptr q
mov cl,w
xor ch,ch
mov ah,e
xor bx,bx
@01: lodsb
cmp al,ah
jae @@02
inc bx
@02: loop @@01
mov ax,bx
end
end;
begin
for b:=1 to n do
begin
write('a[',b,']:=');
readln(a[b])
end;
x:=random(255);
writeln('F(',x,'):=',FA(a,n,x));
writeln('F(',x,'):=');
writeln('F(',x,'):=');
readln;
end.
Код на ассемблере с упрощенным описанием сегмента:
Код :
model small;,pascal
public FB
code
FB proc
push bp
mov bp,sp
lds si,dword ptr[bp+8]
mov cx,[bp+6]
mov ax,[bp+4]
xor bx,bx
@01: lodsb
cmp al,ah
jbe @@02
inc bx
@02: loop @@01
mov al,bl
pOp bp
ret 8
endp
end
и полным описанием:
Код :
_TEXT segment word public 'CODE'
public FC
assume cs:_TEXT
FC proc
push bp
mov bp,sp
lds si,dword ptr[bp+8]
mov cx,[bp+6]
mov ax,[bp+4]
xor bx,bx
@01: lodsb
cmp al,ah
jbe @@02
inc bx
@02: loop @@01
mov al,bl
pOp bp
ret 8
endp
ends
end
Удачи!
----- Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч
Ответ отправил: Зенченко Константин Николаевич (Модератор)
Ответ отправлен: 03.06.2011, 10:56
Номер ответа: 267558 Украина, Киев Тел.: +38-097-238-60-03 Адрес: Украина, Киев
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 267558
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.