![]() |
Зачет по ассемблеру.
Помогите с зачетом, сам я в ассемблере не понимаю надо написать 2 программы в паскале с встраиваемыми модулями ассемблера. Задачи:
1) Найти сумму натуральных чисел меньшик K. 2) Найти частное между 2 числами введенными с клавиатуры. Эту я сделал но она не работает вот листинг: var a,b:integer; chas:integer; begin writeln('Vvedite a '); readln(a); writeln ('Vvedite b'); readln(b); asm mov ax,a mov bx,b div ax,b mov chas,ax end; writeln('Chasnoe', chas); end. |
Цитата:
|
Deathdreams да у нас это особого значения не имеет можно и целые и с точкой главно чтобы работала.
|
asm
mov ax, [a] div ax, [b] move [chas], ax Не? Просто нету возможности проверить вот и тыкаюсь |
.Slip пишет Error 155: Invalid combination of opcode and operands выдает на строчке div ax, [b]
|
Дай какой нибудь рабочий кусок паскаль+асм для примера, мне никак сейчас не проверить, поэтому методом тыка.
|
.Slip да у меня у самого нету, решить надо. если убрать b то программа работает но всегда в частное выдаеться один т.е например делишь 6 на 3 будет 1 и так всегда а с b отказываеться работать хз почему(
asm mov ax, a div ax, b mov [chas], ax |
1.я как то так 8)
mov cx, [K] dec cx xor ax,ax A: add cx loop A: mov [rez],ax P.S. .... нужно просто определиться как ПАСКАЛЯ-АССЕМБЛЯ берет переменные и записывает их... затем вспомнить что DIV получает не только целое но и остаток от деления и где они лежат зависят от ТОЛЩИНЫ переменных! :) и главное у DIV один операнд .... при ширине WORD целое записывается в AL(нижний байт AX) а остаток в AH(верхний байт AX) ... Цитата:
|
Retimiled ок спасибо только пока не могу проверить.
|
ппц. народ. div ax, b полюбому выдаст ошибку.
1) div принимает тока 1 параметр. 2) если делитель размером в слово, то делимое должно быть расположено в паре регистров dx:ax, причем младшая часть делимого находится в ax. После операции частное помещается в ax, а остаток — в dx; по этому будет чтото типа такого Код:
mov ax,a |
| Время: 07:37 |