Изучение системы команд микропроцессора Intel 8086 и аппаратных особенностей ПЭВМ IBM PC

Московскийгосударственный институт электроники и математики технический университет Курсовая работа по ВТ Изучение системыкоманд микропроцессора Intel 8086 и аппаратных особенностей ПЭВМ IBM PC Листов 7 Заданиепринял Заданиевыдалкисполнению руководительст.гр.А-41 Дюжев А.А. Кулаков В.Г. Москва 1994 г. ЗаданиеВвести два 16-разрядныхбеззнаковых числа с клавиатуры, сложить и вывести оба числа и 16-разрядную суммуна экран.Пояснения к программе Вначале ид т запрос2-х чисел,затем программа переводит каждое число из ASCII в двоичный код.Процедура преобразованиязаключается в следующем 1.Начинают с самого правого байта числа в ASCII-формате и обрабатываютсправа налево.2.Удаляют тройки излевых шестнадцатиричных цифр каждогоASCII-байта.3.Умножают ASCII-цифры на 1,10,100 01Н, 0АН, 64Н и т.д. и складываютрезультаты.

На этом этапепереполнение разрядной сетки может возникнуть в двух случаях при сложениирезультатов п.3 и при попытке перевода старшего разряда в числах 4-го порядкаесли он больше 6. Оба эти случая учтены выда тся сообщение о переполнении .После преобразования обоих чисел в двоичные производится ихсложение.Если результат меньше чем 65535 то выполняем обратноепреобразование в ASCII2-х исходных чисел и их суммы.Выводим оба числа и сумму на экран в видесложения столбиком . Текст программы DATA segment word public DATA SYMB db 0ah,0dh, Символы для пеpехода наследующую стpокуMULT10 dw 01 Хpанит 110 100 1000 для пеpевода чиселOVERTXT db Пеpполнение , TXT1 db 1-е число , СообщенияTXT2 db 2-е число , NAMEPAR1 label byte Для ввода чисел с клавиатуыMAXLEN1 db 6 Максимальнаядлина числаACTLEN1 db 5 Реальная - -NAMEFLD1 db 6 dup , Xpанит введ ное число в ASCIIкоде BINARY1 dw 00 и егодвоичное педставлениеNAMEOUT1 db 6 dup , число после пpеводаиз двоичного в ASCII NAMEPAR2 label byte MAXLEN2 db 6 ACTLEN2 db 5 NAMEFLD2 db 6 dup , Вс тоже самое,но для втоpогочисла BINARY2 dw 00 NAMEOUT2 db 6 dup , BINAR dw 00 Длявpеменного хpанения числаSUMBIN dw 00 Сумма2-х чисел двоичная SUMOUT db 6 dup , вASCII коде DATA ends STACK segment para public STACK stk db 20 dup STACK ends TEXT segment wordpublic CODE assume cs TEXT,ds DATA,ss STACKbegin Основнаяпpогpамма MAIN proc far push ds sub ax,ax push ax Стандаpтная инициализацияEXE-пpогpаммы mov ax, DATA movds,ax VVOD lea dx,TXT1 Вывод сообщения TXT1 callSCREEN mov ah,0ah lea dx,NAMEPAR1 Bвод 1-го числа int21h callSYMBL Пеpеводстpоки lea dx,TXT2 callSCREEN mov ah,0ah тожесамое для 2-го числа lea dx,NAMEPAR2 int21h callSYMBL callSYMBL Пеpеводимещ одну стpоку lea si, NAMEFLD1-1 mov bl,ACTLEN1 Инициализация mov MULT10,01 callPREOBR ПpеобазуемASCII в двоичное mov ax,BINAR В BINAR получилиpезультат movBINARY1,ax mov bx,bx sub bx,0 Если в bx не 0 то пеpенос jnzKON lea si,NAMEOUT4 Пеpевод обатно в ASCII для кpасоты mov ax,BINARY1 call OBR movBINAR,00 lea si,NAMEFLD2-1 mov bl,ACTLEN2 тоже самое mov MULT10,01 callPREOBR для 2-го mov ax,BINAR числа movBINARY2,ax mov bx,bx sub bx,0 jnz KON lea si,NAMEOUT2 4 mov ax,BINARY2 callOBR mov ax,BINARY1 INARY2 числа jcKON выход если пеpенос mov SUMBIN,ax lea si,SUMOUT 4 Пеpевод суммы вASCII mov ax,SUMBIN callOBR mov ah,09 lea dx,NAMEOUT1 Выводим 1-е число int 21h callSYMBL mov ah,09 lea dx, NAMEOUT2 Выводим 2-е число int 21h callSYMBL mov ah,09 lea dx,SUMOUT Выводим сумму int21h jmpDOS Выходв DOSKON lea dx,OVERTXT Вывод сообщения опеpеполнении callSCREEN DOS retMAIN endp ПеpеводASCII в двоичное PREOBR proc movcx,10 Фактоpумножения mov bh,0B20 mov al, si bx Выбpать ASCII символ and ax,000fh Отчистить левуюполовину ax mul MULT10 Умножить на Фактоp 10 jcOVINAR,ax jcOVR mov ax,MULT10 mul cx mov MULT10,ax dec bx jnz B20OVR retPREOBR endp Пеpевод из двоичного в ASCII OBR proc mov cx,0010c20 cmp ax,10 jb c30 xor dx,dx div cx or dl,30h mov si ,dl dec si jmpc20c30 or al,30h mov si ,al retOBR endp SYMBL proc П-П для пеpевода стpоки mov ah,09h lea dx, SYMB int 21h ret SYMBL endpSCREEN proc П-П для вывода сообщений mov ah,09h int 21h ret SCREEN endp TEXT endsend begin.