Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
10.06.2023
Размер:
49.19 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АПУ

отчет

по практической работе №3

по дисциплине «Системное программирование»

Тема: Ввод чисел. Перевод чисел в различные системы счисления.”

Студент гр. 8391

Гоглев А.А.

Студент гр. 8391

Шушков Д.А.

Студент гр. 8391

Маликов А.А.

Преподаватель

Кораблев Ю.А.

Санкт-Петербург

2021

Цель работы.

Научиться вводить в ассемблерную программу числовую информацию. Разработка алгоритмов для перевода чисел в различные системы счисления.

Задание.

Разработать программу перевода чисел из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную. Числа должны вводиться в десятичной системе счисления, а выводятся – в двоичной, восьмеричной и шестнадцатеричной.

1. Разработаем COM-программу:

CODE SEGMENT

ASSUME CS:CODE, DS:CODE, SS:CODE

ORG 100H

START: // ввод числа

MOV AH, 0AH

LEA DX, BUF

INT 21H

MOV AH, 02h

MOV DL, 0AH

INT 21H

MOV DI, 0 // перевод символов в десятичное число

LEA BX, BUF+1

MOV CX, [BX]

XOR CH, CH

MOV SI, 1

LOOP1:

PUSH SI

MOV SI, CX

MOV AL, [BX+SI]

XOR AH, AH

POP SI

SUB AL, 30h

MUL SI

ADD DI, AX

MOV AX, SI

MOV DX, 10

MUL DX

MOV SI, AX

LOOP LOOP1

PUSH DI // перевод в двоичную СС

LEA BX, BINBUF+1

MOV CX, 16

MOV [BX], CL

MOV AL, 31h

LOOP2:

MOV SI, CX

SHR DI, 1

JNC ZERO

MOV [BX+SI], AL

ZERO:

LOOP LOOP2

POP DI

PUSH DI // перевод в восьмеричную СС

LEA BX, OCTBUF+1

MOV CX, 6h

MOV [BX], CL

LOOP3:

MOV AX, DI

MOV SI, CX

AND AX, 111b

ADD AX, 30h

MOV [BX+SI], AL

PUSH CX

MOV CX, 3h

SHR DI, CL

POP CX

LOOP LOOP3

POP DI

PUSH DI // перевод в шестнадцатеричную СС

LEA BX, HEXBUF+1

MOV CX, 4h

MOV [BX], CL

LOOP4:

MOV AX, DI

MOV SI, CX

AND AX, 1111b

PUSH SI

MOV SI, AX

MOV DL, [HEXSTR+SI]

POP SI

MOV [BX+SI], DL

PUSH CX

MOV CX, 4h

SHR DI, CL

POP CX

LOOP LOOP4

POP DI

MOV AH, 09h // вывод

LEA DX, BINBUF+2

INT 21H

MOV AH, 02h

MOV DL, 0aH

INT 21H

MOV AH, 09h

LEA DX, OCTBUF+2

INT 21H

MOV AH, 02h

MOV DL, 0aH

INT 21H

MOV AH, 09h

LEA DX, HEXBUF+2

INT 21H

MOV AH, 4CH

INT 21H

BUF DB 6, 00, 6 DUP ('$') // объявление буферов

BINBUF DB 16, 00, 16 DUP (30h), '$'

OCTBUF DB 6, 00, 6 DUP (?), '$'

HEXBUF DB 4, 00, 4 DUP (?), '$'

HEXSTR DB '0123456789ABCDEF'

CODE ENDS

END START

2. Пример выполнения работы программы

Рис.1 Пример выполнения работы программы

Соседние файлы в папке УТС 7 семестр