mov al, a
cbw
mov bx, ax
mov al, b
cbw
add bx, ax
;...
.model small
.stack 100h
.data
a db 2
b db 3
c db 5
d db 7
e db 4
.code
begin: mov AX, @data
mov DS, AX
mov al, b
cbw ;ax = b
mov bx, ax ;bx = b
mov al, c
cbw ;ax = c
add bx, ax ;bx = b + c
mov al, d
cbw ;ax = d
add bx, ax ;bx = b + c + d
mov al, e
cbw ;ax = e
add bx, ax ;bx = b + c + d + e
;разделим с остатком на 2^a
;найдем маску для остатка
mov cl, a ;cl = a
mov ax, 1 ;ax = 00000001b
shl ax, cl ;ax = 00000100b (для а = 2)
dec ax ;ax = 00000011b
and ax, bx ;остаток деления на 2^а = 4 будет число, "равное а последним битам"
sar bx, cl ;частное, как арифметический сдвиг вправо на а бит
mov ax, 4c00h
int 21h
end
.data
.code
a db2
b db3
c db5
d db 7
e db 4
xor bx,bx
xor ax,ax
mov bl,b
mov al,c
add bx,ax
mov al,d
add bx,ax
mov cl,a
shr bx,cl
...
xor ax,ax
shrd ax,bx,cl
shr bx,cl
rol ax,cl
mov ax, 1
shl ax, cl
dec ax
and ax, bx
shr bx, cl
Turbo Assembler Version 2.0 03/26/11 17:06:25 Page 1
a.ASM
1 0000 .model tiny
2 0000 .code
3 .386
4 org 100h
5 0100 begin:
6 0100 0F AD D8 shrd ax,bx,cl
7 end begin
Turbo Assembler Version 2.0 03/26/11 17:06:25 Page 2
Symbol Table
Symbol Name Type Value
??DATE Text "03/26/11"
??FILENAME Text "a "
??TIME Text "17:06:25"
??VERSION Number 0200
@CODE Text DGROUP
@CODESIZE Text 0
@CPU Text 0D0FH
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text A
@MODEL Text 1
@WORDSIZE Text 4
BEGIN Near DGROUP:0100
Groups & Segments Bit Size Align Combine Class
DGROUP Group
_DATA 16 0000 Word Public DATA
_TEXT 16 0103 Word Public CODE
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.