Разработать программу на языке Ассемблера Intel x86 для ОС MS-DOS. Модель памяти – не регламентируется. Программа при запуске выводит приветствие с ФИО исполнителя, НОМЕР ЗАЧЕТНОЙ КНИЖКИ и текст задания. Программа ожидает ввода строки от пользователя, затем выполняет действия в соответствии с заданием (расчёт контрольной суммы). Результат отобразить на экране.
По сути мне в большей степени непонятна часть касательно контрольной суммы и команды которые нужны для её расчёта.
Остальное думаю смогу сам подставить
ВУЗы и колледжи
Рассчитать контрольную сумму строки, введённой пользователем. Задача на Ассемблере.
Не совсем понятно, по какому алгоритму должна вычисляться контрольная сумма.
В примере ниже вычисляется циклическая контрольная сумма CRC-16 с порождающим полиномом C002h:
.286
.model small
.stack 100h
.data
Prompt db 'Исполнитель: SanKira', 13, 10
db 'Номер зачётной книжки: 186815090', 13, 10
db 'Текст задания', 13, 10, 10
db 'Введите строку текста: ', 13, 10, 36
Result db 10, 'Контрольная сумма текста: $'
WaitText db 10, 10, 'Для завершения работы нажмите любую клавишу... $'
.data?
CRC_Table dw 256 dup (?)
Txt_Buff db 82 dup (?)
.code
N186815090:
mov ax, @data
mov ds, ax
mov es, ax
call Create_CRC_Table
mov ah, 9
lea dx, Prompt
int 21h
mov Txt_Buff, 80
inc ah
lea dx, Txt_Buff
int 21h
dec ah
lea dx, Result
int 21h
lea si, Txt_Buff + 2
xor cx, cx
mov cl, [si - 1]
call Get_CRC16
call Out_Hex
lea dx, WaitText
mov ah, 9
int 21h
mov ax, 0C08h
int 21h
mov ax, 4C00h
int 21h
Create_CRC_Table proc
mov cx, 256
xor dx, dx
lea di, CRC_Table
Create_Loop:
push cx
mov cx, 8
mov ah, dl
mov al, ch
Shift_Loop:
shl ax, 1
jnc No_XOR
xor ax, 0C002h
No_XOR:
loop Shift_Loop
stosw
pop cx
inc dx
loop Create_Loop
ret
Create_CRC_Table endp
Get_CRC16 proc
mov dx, -1
jcxz End_CRC16
Get_Loop:
mov bl, dh
xor bl, [si]
xor bh, bh
shl bx, 1
shl dx, 8
xor dx, CRC_Table[bx]
inc si
loop Get_Loop
End_CRC16:
mov ax, -1
xor ax, dx
ret
Get_CRC16 endp
Out_Hex proc
mov cx, 4
Hex_Loop:
mov dl, ah
shl ax, 4
shr dl, 4
cmp dl, 9
jna Less_10
add dl, 7
Less_10:
add dl, 30h
push ax
mov ah, 2
int 21h
pop ax
loop Hex_Loop
ret
Out_Hex endp
end N186815090

В примере ниже вычисляется циклическая контрольная сумма CRC-16 с порождающим полиномом C002h:
.286
.model small
.stack 100h
.data
Prompt db 'Исполнитель: SanKira', 13, 10
db 'Номер зачётной книжки: 186815090', 13, 10
db 'Текст задания', 13, 10, 10
db 'Введите строку текста: ', 13, 10, 36
Result db 10, 'Контрольная сумма текста: $'
WaitText db 10, 10, 'Для завершения работы нажмите любую клавишу... $'
.data?
CRC_Table dw 256 dup (?)
Txt_Buff db 82 dup (?)
.code
N186815090:
mov ax, @data
mov ds, ax
mov es, ax
call Create_CRC_Table
mov ah, 9
lea dx, Prompt
int 21h
mov Txt_Buff, 80
inc ah
lea dx, Txt_Buff
int 21h
dec ah
lea dx, Result
int 21h
lea si, Txt_Buff + 2
xor cx, cx
mov cl, [si - 1]
call Get_CRC16
call Out_Hex
lea dx, WaitText
mov ah, 9
int 21h
mov ax, 0C08h
int 21h
mov ax, 4C00h
int 21h
Create_CRC_Table proc
mov cx, 256
xor dx, dx
lea di, CRC_Table
Create_Loop:
push cx
mov cx, 8
mov ah, dl
mov al, ch
Shift_Loop:
shl ax, 1
jnc No_XOR
xor ax, 0C002h
No_XOR:
loop Shift_Loop
stosw
pop cx
inc dx
loop Create_Loop
ret
Create_CRC_Table endp
Get_CRC16 proc
mov dx, -1
jcxz End_CRC16
Get_Loop:
mov bl, dh
xor bl, [si]
xor bh, bh
shl bx, 1
shl dx, 8
xor dx, CRC_Table[bx]
inc si
loop Get_Loop
End_CRC16:
mov ax, -1
xor ax, dx
ret
Get_CRC16 endp
Out_Hex proc
mov cx, 4
Hex_Loop:
mov dl, ah
shl ax, 4
shr dl, 4
cmp dl, 9
jna Less_10
add dl, 7
Less_10:
add dl, 30h
push ax
mov ah, 2
int 21h
pop ax
loop Hex_Loop
ret
Out_Hex endp
end N186815090

Похожие вопросы
- Помогите решить задачу на ассемблере
- Добрый день. Помогите решить задачу из контрольной по высшей математике.
- Рассчитать сумму вклада через 3 года при сложной процентной ставке 10% годовых, если было вложено 1000 рублей
- Помогите решить задачи по молекулярной физике на контрольную
- Написать программу для перевода введённого с клавиатуры шестнадцатеричного числа в десятичное на ассемблере (MASM).
- Помогите с написанием программы на АССЕМБЛЕРЕ!!! (внутри)
- СРОЧНО, ПОЖАЛУЙСТА!!! Задача: Коэффициент загрузки равен 0,4 . Выручка от реализации - 10млн. руб. Определить сумму
- помогите с Ассемблером
- На контрольной попалась задача, никак не могу ее решить... помогите пожалуйста
- помогите рассчитать задачи