19.06.2012, 01:49
общий
это ответ
Здравствуйте, Flawless!
1)
Числа-байты: 17, -7, 221
Числа-слова 17, -7, 321
Числа-слова:
17 = 00010001b = 11h
-7 = 11111001b = 0f9h
221 = 11011101b = 0ddh
Обратите внимание, что число 221 можно рассматривать только, как беззнаковое число
Числа-слова:
17 = 00010001 00000000b = 1100h
-7 = 11111001 11111111b = 0f9ffh
321 = 01000001 00000001b = 4101h
Байты в двоичной записи, для наглядности, отделил пробелом
3)
[code h=200]; Описание данных и пересылки
S SEGMENT STACK
DW 64 DUP(?)
S ENDS
DAT SEGMENT ; сегмент данных
; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ
F DB 5 dup (?) ; 5 неициированных байт
H DD 0ABCDEF01h ; в памяти будет в обратном порядке: 01 EF CD AB
K DW 4 DUP(1234) ; 4 слова
L DB 'QWRTP' ; 5 согласных
DAT ENDS
C SEGMENT
ASSUME SS:S,CS:C,DS:DAT
Start PROC FAR
; Выполнение соглашений DOS и настройка регистра DS
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,D ; D - непосредственный операнд, в сегментный регистр
MOV DS,AX ; напрямую не пересылается!!!
;a)
MOV DI, H+2 ;старшее слово лежит последним
MOV SI, H ;младшее - первым
;б)
MOV AX, K+2 ;второе слово лежит по смещению +2
;в)
MOV AX, 234
;г)
MOV BYTE PTR H+3, CH ;байт CH на место старшего байта двойного слова
MOV BYTE PTR K+7, CH ;а место старшего байта последнего слова
; Возврат в DOS
RET
Start ENDP
C ENDS
END Start[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен