А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Э Ю Я

 

Реферат: Дифференцированные уравнения.

 


 

Дифференцированные уравнения.

Московский государственный институт электроники и математики (технический университет) Курсовая работа по ВТ Изучение системы команд микропроцессора Intel 8086 и аппаратных особенностей ПЭВМ IBM PC Листов 7 Задание принял Задание выдал к исполнению руководитель ст.гр.А-41 ДДДДДДДДДДДД Дюжев А.А. ДДДДДДДДДДДДД Кулаков В.Г. Москва 1994 г. - 2 - Задание Ввести два 16-разрядных беззнаковых числа с клавиатуры,сложить и вывести оба числа и 16-разрядную сумму на экран. Пояснения к программе Вначале идст запрос 2-х чисел,затем программа переводит каждое число из ASCII в двоичный код. Процедура преобразования заключается в следующем: 1.Начинают с самого правого байта числа в ASCII-формате и обрабатывают справа налево. 2.Удаляют тройки из левых шестнадцатиричных цифр каждого ASCII-байта. 3.Умножают ASCII-цифры на 1,10,100 (01Н, 0АН, 64Н ) и т.д. и складывают результаты. На этом этапе переполнение разрядной сетки может возникнуть в двух случаях:при сложении результатов (п.3) и при попытке перевода старшего разряда в числах 4-го порядка если он больше 6. Оба эти случая учтены (выдастся сообщение о переполнении). После преобразования обоих чисел в двоичные производится их сложение.Если результат меньше чем 65535 то выполняем обратное преобразование в ASCII 2-х исходных чисел и их суммы. Выводим оба числа и сумму на экран в виде сложения "столбиком". - 3 - Текст программы _DATA segment word public 'DATA' ;---------------------------------------------------------------------------- SYMB db 0ah,0dh,'$' ;Символы для пеpехода на следующую стpоку MULT10 dw 01 ;Хpанит 1 10 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 word public 'CODE' ;------------------------------------------------------------------------------- assume cs:_TEXT,ds:_DATA,ss:_STACK - 4 - begin: ; -----Основная пpогpамма----- MAIN proc far push ds ; sub ax,ax ; push ax ;Стандаpтная инициализация EXE-пpогpаммы mov ax,_DATA ; mov ds,ax ; VVOD: lea dx,TXT1 ;Вывод сообщения TXT1 call SCREEN ; mov ah,0ah ; lea dx,NAMEPAR1 ;Bвод 1-го числа int 21h ; call SYMBL ;Пеpевод стpоки lea dx,TXT2 ; call SCREEN ; mov ah,0ah ; тоже самое для 2-го числа lea dx,NAMEPAR2 ; int 21h ; call SYMBL ; call SYMBL ;Пеpеводим ещс одну стpоку lea si,NAMEFLD1-1 ; mov bl,ACTLEN1 ;Инициализация mov MULT10,01 ; call PREOBR ;Пpеобазуем ASCII в двоичное mov ax,BINAR ;В BINAR получили pезультат mov BINARY1,ax mov bx,bx ; sub bx,0 ;Если в bx не 0 то пеpенос jnz KON ; lea si,NAMEOUT1+4 ;Пеpевод обатно в ASCII (для кpасоты) mov ax,BINARY1 ; call OBR ; mov BINAR,00 - 5 - lea si,NAMEFLD2-1 ; mov bl,ACTLEN2 ; тоже самое mov MULT10,01 ; call PREOBR ; для 2-го mov ax,BINAR ; числа mov BINARY2,ax ; mov bx,bx ; sub bx,0 ; jnz KON ; lea si,NAMEOUT2+4 ; mov ax,BINARY2 ; call OBR mov ax,BINARY1 ; Складываем add a.zipћ x,BINARY2 ; числа jc KON ; выход если пеpенос mov SUMBIN,ax ; lea si,SUMOUT+4 ;Пеpевод суммы в ASCII mov ax,SUMBIN ; call OBR ; mov ah,09 ; lea dx,NAMEOUT1 ;Выводим 1-е число int 21h ; call SYMBL ; mov ah,09 ; lea dx,NAMEOUT2 ;Выводим 2-е число int 21h ; call SYMBL ; mov ah,09 ; lea dx,SUMOUT ;Выводим сумму int 21h ; jmp DOS ;Выход в DOS KON: lea dx,OVERTXT ;Вывод сообщения о пеpеполнении call SCREEN ; DOS: ret MAIN endp ; ------Пеpевод ASCII в двоичное------ - 6 - PREOBR proc mov cx,10 ;Фактоp умножения mov bh,0 B20: mov al,[si+bx] ;Выбpать ASCII символ and ax,000fh ;Отчистить левую половину ax mul MULT10 ;Умножить на Фактоp 10 jc OVR ; add BINAR,ax jc OVR mov ax,MULT10 mul cx mov MULT10,ax dec bx jnz B20 OVR: ret PREOBR endp ; ------Пеpевод из двоичного в ASCII---- OBR proc mov cx,0010 c20: cmp ax,10 jb c30 xor dx,dx div cx or dl,30h mov [si],dl dec si jmp c20 c30: or al,30h mov [si],al ret OBR endp SYMBL proc ; П-П для пеpевода стpоки ; mov ah,09h ; lea dx,SYMB ; int 21h ; ret ; - 7 - SYMBL endp SCREEN proc ; П-П для вывода ; сообщений mov ah,09h ; int 21h ; ret ; SCREEN endp ;----------------------------------------------------------------------------- _TEXT ends end begin ыучрях:ярш сыюцхэшш рхчуыьтртют (я.3) ш ярш яюяытъх яхрхтюфр стрршхую ррчряфр т чшсырх 4-ую яюряфър хсыш юэ сюыьшх 6. Оср этш сыучря учтхэы (тыфрстся сююсщхэшх ю яхрхяюыэхэшш). Пюсых ярхюсррчютрэшя юсюшх чшсхы т фтюшчэых ярюшчтюфштся шх сыюцхэшх.Есыш рхчуыьтрт ьхэьшх чхь 65535 тю тыяюыэяхь юсрртэюх ярхюсррчютрэшх т ASCII 2-х шсхюфэых чшсхы ш шх суььы. Вытюфшь юср чшсыр ш суььу эр эъррэ т тшфх сыюцхэшя "стюысшъюь". - 3 - Тхъст ярюуррььы _DATA segment word public 'DATA' ;---------------------------------------------------------------------------- SYMB db 0ah,0dh,'$' ;Сшьтюыы фыя яхpххюфр эр сыхфующую стpюъу MULT10 dw 01 ;Хpрэшт 1 10 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 word public 'CODE' ;------------------------------------------------------------------------------- assume cs:_TEXT,ds:_DATA,ss:_STACK - 4 - begin: ; -----Осэютэря яpюуpрььр----- MAIN proc far push ds ; sub ax,ax ; push ax ;Стрэфрpтэря шэшцшрышчрцшя EXE-яpюуpрььы mov ax,_DATA ; mov ds,ax ; VVOD: lea dx,TXT1 ;Вытюф сююсщхэшя TXT1 call SCREEN ; mov ah,0ah ; lea dx,NAMEPAR1 ;Bтюф 1-ую чшсыр int 21h ; call SYMBL ;Пхpхтюф стpюъш lea dx,TXT2 ; call SCREEN ; mov ah,0ah ; тюцх срьюх фыя 2-ую чшсыр lea dx,NAMEPAR2 ; int 21h ; call SYMBL ; call SYMBL ;Пхpхтюфшь хщс юфэу стpюъу lea si,NAMEFLD1-1 ; mov bl,ACTLEN1 ;Иэшцшрышчрцшя mov MULT10,01 ; call PREOBR ;Пpхюсрчухь ASCII т фтюшчэюх mov ax,BINAR ;В BINAR яюыучшыш pхчуыьтрт mov BINARY1,ax mov bx,bx ; sub bx,0 ;Есыш т bx эх 0 тю яхpхэюс jnz KON ; lea si,NAMEOUT1+4 ;Пхpхтюф юсртэю т ASCII (фыя ъpрсюты) mov ax,BINARY1 ; call OBR ; mov BINAR,00 - 5 - lea si,NAMEFLD2-1 ; mov bl,ACTLEN2 ; тюцх срьюх mov MULT10,01 ; call PREOBR ; фыя 2-ую mov ax,BINAR ; чшсыр mov BINARY2,ax ; mov bx,bx ; sub bx,0 ; jnz KON ; lea si,NAMEOUT2+4 ; mov ax,BINARY2 ; call OBR mov ax,BINARY1 ; Съырфытрхь add a.zipћ

 

Электронные рефераты / Контакты
 

Hosted by uCoz