Материал: lw_3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

int 21h

pop ax and al,0Fh cmp al,10 sbb al,69h das

mov dl,al mov ah,02 int 21h

; преобразуем число в bh в ASCII-код

mov al,bh push ax shr al,4 cmp al,10 sbb al,69h das

mov dl,al mov ah,02 int 21h

pop ax and al,0fh cmp al,10 sbb al,69h das

mov ah,02 mov dl,al int 21h jmp m3

m1:

;здесь оказываемся, если число в bh ИЛИ сx равно 0 ;настраиваем es на сегмент кода и начинаем считывать коды

команд ;заменяя нулевой элемент в регистре на не нулевой

push cs pop es cmp cx,0 jnz m01

mov cx, word ptr es:[si] m01:

cmp bh,0 jnz m02

mov bh, byte ptr es:[si] m02:

inc si jmp m2

;вычисляем выражение m3:

mov al,a cbw sub ax,c

mov si,ax

mov al, d cbw

xor ax,b

or si, ax; результат вычисления выражения будет в регистре si

Exit:

mov ax,4C00h int 21h

END Start

ЗАДАНИЕ №3

.386

.model flat,stdcall option casemap:none

include ..\INCLUDE\kernel32.inc include ..\INCLUDE\user32.inc includelib ..\LIB\kernel32.lib includelib ..\LIB\user32.lib BSIZE equ 15

.data

ifmt db "%d", 0 ;строка формата stdout dd ?

cWritten dd ?

CRLF WORD ?

.data?

buf db BSIZE dup(?) ;буфер

.code start:

invoke GetStdHandle, -11 mov stdout,eax

mov CRLF, 0d0ah

;-------------------------умножение mov bx, 4

mov ax, 3 mul bx

invoke wsprintf, ADDR buf, ADDR ifmt, eax

invoke WriteConsoleA, stdout, ADDR buf, BSIZE, ADDR cWritten, 0

invoke ExitProcess,0 end start

ЗАДАНИЕ №4

.386

.model flat,stdcall option casemap:none

include ..\INCLUDE\kernel32.inc include ..\INCLUDE\user32.inc includelib ..\LIB\kernel32.lib includelib ..\LIB\user32.lib BSIZE equ 15

.data

ifmt db "%d", 0 ;строка формата stdout dd ?

cWritten dd ?

CRLF WORD ?

.data?

buf db BSIZE dup(?) ;буфер

.code start:

invoke GetStdHandle, -11 mov stdout,eax

mov CRLF, 0d0ah

;

-------------------------деление

mov eax, 99 mov edx, 0 mov ebx, 3 div ebx

invoke wsprintf, ADDR buf, ADDR ifmt, eax

invoke WriteConsoleA, stdout, ADDR buf, BSIZE, ADDR cWritten, 0

invoke WriteConsoleA, stdout, ADDR CRLF, 2, ADDR cWritten,0

ЗАДАНИЕ №5

0000

CODE

SEGMENT

 

ASSUME

CS

:CODE,

DS

:CODE

0000

???? X

 

DW

? ; Память для переменных

0002

???? A

 

DW

?

 

0004

???? B

 

DW

?

 

0006

???? C

 

DW

?

 

0008

???? D

 

DW

?

 

000A

FIG4_16 PROC

 

 

NEAR

 

 

 

000A B8 0002MOV

 

AX

, 2

 

 

 

 

 

 

 

 

 

 

 

 

; Загрузка константы

000D F7 2E 0002 R

IMUL

 

 

 

 

A

; DX:AX = A * 2

0011

8B DA

 

MOV

 

BX

,

 

 

DX

 

 

 

 

0013

8B C8

MOV

CX

,

AX

 

 

 

 

 

; BX:CX = A * 2

0015

A1 0004 R

MOV

 

AX

, B

 

0018

F7 2E 0006 R

IMUL

 

 

C

; DX:AX = B * C

001C 03 C1

ADD

 

 

 

AX

,

CX

 

 

 

 

 

001E 13 D3

ADC

 

 

 

DX

,

BX

 

 

 

 

; DX:AX = A * 2 + B * C

0020

8B 0E 0008 R

MOV

 

 

 

CX

, D

 

0024

83 E9 03

 

SUB

 

 

 

CX

, 3

 

 

; CX = D - 3

0027

F7 F9

IDIV

 

 

CX

 

 

; AX = (A*2 + B*C) / (D-3)

0029

A3 0000 R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X,

 

 

 

; Сохранение

 

MOV

 

 

AX

 

результата

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

002C C3 RET

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

002D

FIG4_16 ENDP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

002D

CODE

ENDS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

END

ЗАДАНИЕ №6

.MODEL tiny

.STACK 100h

.CODE

mov ah,01101010b mov bl,10101100b mov ch,01011001b

or ah,bl not ch

xor ch,0F2h and ah,ch mov al,ah mov ah,4ch int 21h END

;Загрузка в регистр ah значения 6АН ;Загрузка в регистр bl значения ACH ;Загрузка в регистр ch значения 59Н

ЗАДАНИЕ №7

.MODEL SMALL

.STACK 100h

.DATA a db ? b db ? c db ? d db ? x dw ?

.CODE start:

mov ax, @data mov ds,ax mov a, 26 mov b, 63 mov c, 144 mov d, 48

end start

ЗАДАНИЕ №8

.MODEL tiny

.STACK l00h

.CODE

xor ax,ax ;Заносим в регистр АХ нулевое значение

mov es,ax ;Передаем это значение в сегментный регистр test byte ptr es:[417h],4 ;проверяем байт состояния клавиатуры если светодиод caps

;lock на клавиатуре светится (бит 2=1), то флаг Z будет равен 0 mov ah,0101b ;занесем в АН чередующуюся последовательность бит

test ah,l ;проследите изменение значение флага Z