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

Практические работы / 9091_Боброва_практ_3

.docx
Скачиваний:
5
Добавлен:
07.08.2024
Размер:
21.39 Кб
Скачать

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

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

ОТЧЕТ

по практической работе №3 по дисциплине «Системное программирование»

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

Студентка гр. 9091 Боброва Н.Ю.

Преподаватель Кораблев Ю.А.

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

2024

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

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

Код программы

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

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

Соседние файлы в папке Практические работы