Nano Hash - криптовалюты, майнинг, программирование

Ассемблер: Не могу понять, куда идти отсюда

Итак, я сейчас работаю над заданием для класса. Мне не нужна работа, сделанная за меня, хотя это всегда полезно, если к этому есть объяснение. Я действительно просто хочу толчок в правильном направлении. Мое задание:

Напишите программу на ассемблере, решающую следующую задачу. В компании Albatross работают четыре продавца (от 1 до 4), которые продают пять различных товаров (от 1 до 5). Раз в день каждый продавец отчитывается о продажах каждого товара. Эти отчеты со временем объединяются в файл. Каждая запись в файле содержит три значения: • Номер продавца от 1 до 4 (3 символа в ширину, выравнивание по правому краю) • Номер продукта от 1 до 5 (3 символа в ширину, выравнивание по правому краю) • Стоимость проданного продукта в долларах. день этим продавцом (9 символов по правому краю) Ваша программа должна запрашивать у пользователя имя файла, обрабатывать файл и сообщать итоговые данные для каждого продавца и для каждого продукта. Образец файла данных под названием «Albatross.dat» предоставляется для того, чтобы вы могли протестировать свою программу. Ваша программа должна иметь возможность обрабатывать файл данных, содержащий любое количество записей о продажах. Это означает, что файл входных данных может содержать несколько записей для каждого продавца и комбинации продуктов. Не пишите свою программу так, чтобы она всегда (и только) ожидала количество записей, которые оказались в файле данных образца. Ваша программа будет проверена и оценена путем выполнения ее с файлом данных, который содержит меньше записей, чем в образце файла данных, с образцом файла данных и, наконец, с файлом данных, который содержит больше записей, чем образец файла данных.

Пока это то, что у меня есть:

.data

askfile BYTE "Enter the data file name: ",0
fileMessage BYTE "Error while opening file: ",0dh,0ah,0
fileName BYTE 256 DUP(0)
byteCount DWORD ?
handle DWORD ?

.code
main PROC

mov edx,OFFSET askfile
call WriteString

;File name

mov edx,OFFSET filename
mov ecx,SIZEOF filename
call ReadString
mov byteCount,eax

;Open

mov edx,OFFSET filename
call OpenInputFile
cmp eax,INVALID_HANDLE_VALUE
je file_error
mov handle,eax
jmp Alpha

file_error:
mov edx,OFFSET fileMessage
call WriteString
jmp Omega

Alpha:
.data
BUFFER_SIZE = 17
buffer BYTE BUFFER_SIZE DUP(?)
bytesRead DWORD ?

.code

;Read from file

mov eax,handle
mov edx,OFFSET buffer
mov ecx,BUFFER_SIZE
call ReadFromFile
jc read_error
cmp eax,BUFFER_SIZE
jl Omega

read_error:
mov edx,OFFSET readMessage
call WriteString
jmp Omega


main ENDP
END main
05.11.2013

  • Я не понимаю проблемы. Вы дошли до открытого файла, так что прочитайте файл строка за строкой, сложите числа, остановитесь, когда дойдете до конца, и распечатайте результаты. 05.11.2013
  • Просто сложите числа, может быть проблема. Для каждого значения в долларах, которое вы найдете, вы захотите добавить его как минимум к двум суммам: к общей сумме для этого продавца и к общей сумме для этого продукта. Вам может понадобиться сумма для этого продавца, для этого продукта тоже... хотя спецификация, кажется, этого не требует. Я представляю матрицу сумм. Почему 17 байт для размера буфера? Эти значения разделены запятыми? Если да, то не хотите ли вы 18 байт? Если нет, то 15? Что ж, у вас есть Albatross.dat. Господи, я надеюсь, что стоимость доллара будет целым числом, а не 349,99... 05.11.2013
  • размер буфера равен 17, потому что он имеет ширину 3 символа для продавца, 3 для продукта, 9 для номера продукта, cr, lf. к счастью, это целые суммы в долларах. значения разделены пробелами. как бы я получить суммы хотя. я знаю, что мне нужно сделать двумерный массив, но я не совсем понимаю двумерные массивы. в двумерном массиве, если продавец 1 продает товар 1 за 1000, (1,1) всегда будет 1000? и как бы я даже отсортировал его так, чтобы он был в порядке продавца или продукта? 05.11.2013
  • как мне взять информацию из файла и заполнить массив 4 строками 5 столбцами. 1 строка для каждого продавца и 1 строка для каждого продукта. 3-й элемент в каждой строке в файле - это сумма продаж. Я думал, что эти числа будут заполнять каждый из элементов в массиве, и я вызываю их, вызывая номер строки и столбца и складывая их вместе, а затем печатая их 06.11.2013

Ответы:


1

Начните с написания и тестирования процедур a2i2a. Когда у вас есть это и файловый ввод-вывод, все остальное просто.

05.11.2013
  • что такое процедуры a2i2a? 05.11.2013
  • ASCII в целое и целое в ASCII. Если я правильно понял, вам нужно будет преобразовать строку в целые числа и обратно. 06.11.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..