Читать практическое задание по всему другому: "Языки программирования высокого уровня (Ассемблер)" Страница 5

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

строк.

А)Б)ah,01mov ax,0610h

Mov ch,5mov bh,07cl,12mov cx,0000 10hmov dx,184fh

Int 10h

. Закодируйте команды для умножения (MUL):

а) слова DATAX на слово DATAY;

б) двойного слова, начинающегося по адресу DATAX, на слово DATAY.

А)

c10mul proc

movax,datax

imuldatay

ret

c10mul endp

Б)

eioxmul proc

mov ax,datax+2

mul datay

mov product+4,ax

mov product+2,dx

mov ax,datax

Mul datay

addproduct+2,ax

adcproduct,dx

ret

eioxmul endp

53. Какой делитель, кроме 0, вызывает ошибку переполнения?

Делитель: - 1

. Закодируйте команды для деления (DIV):

а) слова DATAX на 23;

б) двойного слова, начинающегося по адресу DATAX, на слово DATAY. . Выполните вручную:

а) преобразование ASCII 46328 в двоичный формат (покажите результат в шестнадцатеричном виде);

б) преобразование полученного шестнадцатеричного значения обратно в ASCII-формат. А)

ДесятичноеШестнадцатеричное

*188

*102014

*10030012C

*100060001770

*10000400009C40

Результат:46328B4F8 . Определите таблицу, которая содержит имена дней недели, начиная с воскресенья.

STOKTBL DB 1’SUNDAY’

DB 2 ‘MONDAY’

DB 3 ‘TUESDAY’

DB 4 ‘WEDNESDAY’

DB 5 ‘THURSDAY’

DB 6 ‘FRIDAY’

DB 7 ‘SATURDAY’

57. Предполагая, что воскресенье равно 1 и что под каждое имя отведено по 11 символов, напишите команды прямого доступа к таблице, определенной в вопросе 60.page60,132

TITLEDIRECT (COM)

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,ES:CODESG

ORG100H

BEGIN: JMPSHORT MAIN

; ------------------------------------------------

THREEDB3

MONINDB'11'

ALFMON DB'???','$'

MONTAB DB'MON','TUE','WED','THU','FRI','SAT'

DB'SUN'

; ------------------------------------------------

MAINPROCNEAR

CALLC10CONV

CALLD10LOC

CALLF10DISP­

RET

MAINENDP 58. Напишите функции базовой версии DOS для следующих операций:

а) создание файла; - mov ah, 16h

lea dx, FCBname int 21h

б) установка DTA; - mov ah, 1ah

lea dx, DTAname

int 21h

в) последовательной записи; - mov ah,15

lea dx, FCBname

int 21h

г) открытие файла; - MOV Ah, OFH

LEA DX,FCBname

INT 21h

д) последовательного чтения. - MOV AH, 14H

LEA DX,FCBname INT 21h

59. Напишите программу, которая создает дисковый файл.

;page60,132

;--------------------------------------

stacksg segment para stack 'stack'

dw80 dup(?)ends

;-------------------------------------- segment para 'data'

reclenequ32labelbyte

maxlendbreclendb?dbreclen dup(' ') labelbytedb04db'namefile'db'dat'dw0000dw?dd?

dw?

dt?db00

dd?

crlfdb13,10,'$'

errcdedb00db'name? ','$'

rowdb01 db'*** open error ***','$' db'*** write error ***', '$'ends

;-------------------------------------- segment para 'code' procfar cs:codesg,ds:datasg,ss:stacksg,es:datasg

pushds

subax,ax

pushax

movax,datasg

movds,ax

moves,ax

movax,0600h

callq10scr

callq20curs

callc100pen

cmperrcde,00

jza20loop

retloop:

calld10proc

cmpnamelen,00

jnea20loop

callg10clse

ret

beginendp

60. Напишите программу, которая выводит файл на экран.

c100pen procnear

movah,16h

leadx,fcbrec

int21h

cmpal,00

jnzc20

movfcbrcsz,reclen

leadx,namedta

movah,1ah

int21h

ret:

leadx,opnmsg

callx10err

ret

c100pen endp

61. Закодируйте два макроопределения для умножения:

а) MULTBY должна генерировать код для умножения байта на байт;

б) MULTWD должна генерировать код для умножения слова на слово.

Для множителя и множимого используйте в макроопределении формальные параметры. Напишите небольшую программу, в которой используются соответствующие макрокоманды и определены необходимые области данных.

А)

MULTBY MACRO

ASSUME CS:CSEG,DS:DSEG,SS:STACK;ES:DSEG

PUSH DS

FLDA DB 23DB 21FLDA,FLDB

ENDM Б)MACRO

ASSUME CS:CSEG,DS:DSEG,SS:STACK;ES:DSEG

PUSH DS

FLDA DW 12DW 34FLDA,FLDB

ENDM


Интересная статья: Основы написания курсовой работы