
22.11.2008, 00:56
|
|
Участник форума
Регистрация: 07.04.2008
Сообщений: 166
С нами:
9522826
Репутация:
68
|
|
помогите ришить задачу на Асамблере...
Задача///// найти минимальное число из заданих чисел 110(bin),33,FO(hex),1111(bin),251 нужно чтоб все ето щитала програмка в Асемблере
Кто поможет++++++++++++++++++++++++
|
|
|

22.11.2008, 01:42
|
|
студент
Регистрация: 30.07.2007
Сообщений: 800
С нами:
9885926
Репутация:
1188
|
|
вот нашел прогу ввода массива и поиска макс и мин элементов.
Код:
Ввести массив чисел, найти min и max, вывести на экран
.model small
.stack 100h
.data
massiv dw 80 dup(?)
msg1 db 0ah,0dh,“Vvodite chisla “,0ah,0dh,“$“
msg2 db 0ah,0dh,“max = $“
msg3 db 0ah,0dh,“min = $“
c10 dw 10
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h ; вывод приглашения для ввода чисел
lea dx,msg1
int 21h
mov di,0 ; в di - max
mov si,32767 ; в si - min
xor dx,dx ; в dx - очередное число
input_loop:
mov ah,01h ; ввод символа
int 21h
cmp al,0dh ; если enter
je chislo ; то занести число в массив
cmp al,20h ; если пробел
je chislo ; то занести число в массив
sub al,30h ; вычитаем '0'
mov cl,al ; сохраняем цифру в cl
mov ax,dx ; в ax - введенное число
mul c10 ; умножаем на 10
xor ch,ch
add ax,cx ; добавляем цифру из al
mov dx,ax ; число снова в dx
jmp input_loop
chislo:
mov bx,cx ; в bx - порядковый номер очередного числа
shl bx,1 ; теперь - смещение очередного числа в массиве
mov massiv[bx],dx ; записываем в массив число
inc cx ; увеличиваем счетчик введенных чисел
cmp dx,si ; сравниваем число с минимальным
jb minimum ; если оно меньше, то jmp на minimum
cmp dx,di ; сравниваем число с максиальным
jg maximum ; если оно больше, то jmp на maximum
jmp chislo_cont ; иначе jmp на chislo_cont
minimum:
mov si,dx ; запоминаем минимальное число в si
jmp chislo_cont
maximum:
mov di,dx ; запоминаем максимальное число в di
chislo_cont:
xor dx,dx ; dx в ноль
cmp cx,80 ; если ввели 80-ое число
je end_input ; то конец ввода
cmp al,0dh ; если был нажат enter
je end_input ; то конец ввода
jmp input_loop
end_input:
mov ah,09h ; вывод на экран msg2
lea dx,msg2
int 21h
mov ax,di ; передаем в функцию output max через ax
call output ; выводим это число
lea dx,msg3 ; вывод на экран msg3
mov ah,9
int 21h
mov ax,si ; передаем в ouptput min через ax
call output ; выводим это число
mov ah,4ch ; завершение программы
int 21h
output proc ; процедура вывода числа, находящегосы в ax
xor cx,cx ; счетчик цифр
div_loop:
xor dx,dx ; подготовка к делению
div c10 ; деление
add dx,30h ; в dx - ASCII-код остатка от деления
push dx ; сохраняем его в стеке
inc cx ; инкремент счетчика
cmp ax,0 ; деление, покуда частное не нулевое
je out_loop
jmp div_loop
out_loop: ; цикл вывода числа
pop dx ; извлекаем из стека очередной остаток
mov ah,02h ; и выводим его на экран
int 21h
loop out_loop ; цикл продолжается cx раз
ret
output endp
end start
щя смотрю где то писал функции перевода в разные СЧ... найду - добавлю.
Вот нашел функцию перевода с BIN to HEX. имхо тебе будет нужно.
-------------------EDIT--------------------------
Код:
BinToHex Proc
mov cx,4
L3:
mov si,ax
and si,0fh;здесь я мож втыканул...или же маска and si,1111b
mov dl,strHex[si] ; DATA strHex DB '0123456789ABCDEF'
dec bx
mov [bx], dl
shr ax,4
dec cx
jnz L3
ret
BinToHex ENDP
-------------------EDIT--------------------------
Последний раз редактировалось NetSter; 22.11.2008 в 02:06..
|
|
|

22.11.2008, 02:02
|
|
Участник форума
Регистрация: 07.04.2008
Сообщений: 166
С нами:
9522826
Репутация:
68
|
|
Спасибо
|
|
|

22.11.2008, 18:58
|
|
Новичок
Регистрация: 12.10.2007
Сообщений: 6
С нами:
9778740
Репутация:
1
|
|
Нужна помощь в написании ФТП клиента с радиобатоном для анонимного входа, поддержкой основных ф-й фтп(просмотр директорий, скачка, выкачка и тд.) Я думаю исходников в нете нарыть можно много, я и нарыл  но встретился с проблемой. Вопервых желательно код на С++ но можна и делфу. Во вторых большинство клиентов получаются досовскими, а радиобатон тогда нельзя добавить. переделать тоже не получается. Помогите хоть чем-то. Наперёд большое спасиба!!!
|
|
|

22.11.2008, 19:08
|
|
студент
Регистрация: 30.07.2007
Сообщений: 800
С нами:
9885926
Репутация:
1188
|
|
Сообщение от madjihad
Нужна помощь в написании ФТП клиента с....
можеш посмотреть сорцы нормального фтп сервера (с) by Pablo Software ЗДЕСЬ
или же если сильно горит недорого смотри ЗДЕСЬ
|
|
|

22.11.2008, 23:34
|
|
Новичок
Регистрация: 12.10.2007
Сообщений: 6
С нами:
9778740
Репутация:
1
|
|
Сообщение от NetSter
можеш посмотреть сорцы нормального фтп сервера (с) by Pablo Software
мне клиент нужен... Простинький. А не сервер 
|
|
|

22.11.2008, 19:52
|
|
Участник форума
Регистрация: 08.11.2008
Сообщений: 164
С нами:
9213300
Репутация:
185
|
|
Народ выручайте,нужно лабу сделать на free pascale кто поможет тому огромный респект
Вот задачи
1)сколько чисел натурального ряда,начиная с А,нужно взять,чтобы сумма нечетных из них не превосходила число ,заданное с клавиатуры.Число Ф задать случайно из диапазона от 1 до 10.
2)Найти сумму всех элементов массива целых чисел,которые меньше средьнего арифмитического элементов массива.Размерность массива 20.Заполнение масива осуществить случайными числами от 150 до 300.
3)Натуральное число из Н цифр являеться числом Амстронга,если сумма его цифр,возведенная в Н степень равна этому числу.Найти все числа Амстронга среди четырехзначных чисел.
4)Дан массив размера 10.Обнулить элементы массыива,расположенные между его минимальным и максимальными элементами(не включая мин. и макс. элементы)
|
|
|

25.11.2008, 15:25
|
|
Banned
Регистрация: 07.11.2007
Сообщений: 301
С нами:
9741926
Репутация:
595
|
|
# include <iostream.h>
valid main ()
{
int x,y
cin << x;
y = tg(x);
switch (y)
{
case y>0 : cout >> "\n Íîìåð ÷åòâåðòè 2 è 3"; break;
case y<0 : cout >> "\n Íîìåð ÷åòâåðòè 1 è 4"; break;
}
}
Что не так?
|
|
|

25.11.2008, 15:35
|
|
Новичок
Регистрация: 25.11.2008
Сообщений: 1
С нами:
9189407
Репутация:
0
|
|
Построить график функции, используя компонент TChart. Функция f(x)=1 - x + sinx - ln(1 + x)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
Label1: TLabel;
Button1: TButton;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
var k: integer;
begin
?????????????????
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
end.
Подскажите, пожалуйста как правильно записать эту функцию.
|
|
|

22.11.2008, 21:35
|
|
Новичок
Регистрация: 26.10.2008
Сообщений: 9
С нами:
9231884
Репутация:
4
|
|
У меня на следующую прогу(преобразоване латинских заглавных букв в строчные) masm выдает такую ошибку:fatal error L1101:invalid object module pos:1E Record type:570C. Объясните мне, что это значит. и также хотелось бы узнать как ее исправить.
Сама прога:
CSEG segment
org 100h
assume CS:CSEG, DS:CSEG, SS:CSEG, ES:CSEG
start:
;очистка экрана
MOV AX,0600H ;AH=06H - УСТАНОВКА ПРОКРУТКИ, AL=00 - ВО ВЕСЬ ЭКРАН
MOV BH,07 ;ЧЕРНО-БЕЛЫЙ ЭКРАН
MOV CX,0000 ;ВЕРХНЯЯ ЛЕВАЯ ПОЗИЦИЯ
MOV DX,184FH ;НИЖНЯЯ ПРАВАЯ ПОЗИЦИЯ
INT 10H ;УПРАВЛЕНИЕ В BIOS
;УСТАНОВКА КУРСОРА В ПОЗИЦИЮ 00
MOV AH,02 ;ЗАПРОС НА УСТАНОВКУ КУРСОРА
MOV BH,00 ;ВЫБОР ВИДЕОСТРАНИЦЫ
MOV DX,0000 ;УСТАНОВКА КУРСОРА
INT 10H ;УПРАВЛЕНИЕ В BIOS
;ВЫВОД ПРИГЛАШЕНИЯ НА ВВОД
MOV AH,09 ;ФУНКЦИЯ ВЫВОДА СТРОКИ
MOV DX,OFFSET MSG1 ;АДРЕС СТРОКИ
INT 21H ;ПОЛЬЗОВАТЕЛЬСКОЕ ПРЕРЫВАНИЕ
;СЧИТЫВАНИЕ СИМВОЛОВ, ВВЕДЕННЫХ С КЛВИАТУРЫ
MOV AH,3FH ;ФУНКЦИЯ ВВОДА
MOV BX,00 ;НОМЕР ДЛЯ КЛАВИАТУРЫ
MOV CX,254 ;ДОПУСТИМОЕ КОЛИЧЕСТВО ВВЕДЕННЫХ СИМВОЛОВ
MOV DX,OFFSET INBUF ;ЗАНЕСЕНИЕ АДРЕСА БУФЕРА В РЕГИСТР DX
INT 21H ;ПОЛЬЗОВАТЕЛЬСКОЕ ПРЕРЫВАНИЕ
SUB AX,02 ;ИЗОБЩЕГО КОЛИЧЕСТВА СИМВОЛОВ ВЫЧИТАЮТСЯ СИМВОЛЫ "ВВОД" И "КОНЕЦ СТРОКИ"
;ИЗМЕНЕНИЕ ЗАГЛАВНЫХ БУКВ НА СТРОЧНЫЕ
MOV SI,OFFSET INBUF ;В РЕГИСТР sI (ИНДЕКС ПРИЕМНИКА) ЗАНОСИМ АДРЕС ПЕРВОГО СИМВОЛА
MOV CX,AX ;В РЕГИСТР CX ЗАНОСИМ КОЛИЧЕСТВО СИМВОЛОВ
L1:
MOV BL,[SI] ;В BL ЗАНОСИМ ПРОСМАТРИВАЕМЫЙ ФАЙЛ
CMP BL,64 ;СРАВНИВАЕМ С 64 65=A
JBE VYHOD ;ЕСЛИ МЕНЬШЕ ИЛИ РАВНО ЗАКАНЧИВАЕМ ПРОСТМОТР
CMP BL,90 ;СРАВНИВАЕМ С 90 90=Z
JA STROKI ;ЕСЛИ БОЛЬШЕ ПРОВЕРИМ НА СТРОЧНОСТЬ
ADD BL,32 ;ЕСЛИ ЗАГЛАВНАЯ ЛАТИНСКАЯ СДЕЛАЕМ СТРОЧНОЙ
MOV [SI],BL ;ВЕРНЕМ НА МЕСТО
JMP VYHOD ;КОНЕЦ
STROKI:
CMP BL,97 ;СРАВНИВАЕМ С 97 97=a
JB VYHOD ;ЕСЛИ МЕНЬШЕ ЗАКАНЧИВАЕМ
CMP BL,122 ;СРАВНИВАЕМ С 122 122=z
JA VYHOD ;ЕСЛИ БОЛЬШЕ ЗАКАНЧИВАЕМ
MOV [SI],BL ;ВОЗВРАЩАЕМ НА МЕСТО
VYHOD:
INC SI ;ПЕРЕХОД НА СЛЕДУЮЩИЙ СИМВОЛ
LOOP L1
MOV BL,BYTE PTR '$'
MOV [SI],BL ;ЗАТЫКАЕТ СТРОКУ СИМВОЛОМ $
;ВЫВОД НОВОЙ СТРОКИ
MOV AH,09
MOV DX,OFFSET MSG2
INT 21H
MOV DX,OFFSET INBUF
INT 21H
INT 20H ;ЗАВЕРШЕНИЕ ПРОГРАММЫ
MSG1 DB "ENTER STRING OF SYMBOLS:$"
MSG2 DB "CONVERT STRING:$"
INBUF DB 256 DUP (' ')
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|