[word ptr Operand +4], 0ffffhgood2; Кількість <32767 [word ptr Operand +2], 0ffffhgood2; Кількість <32767 [word ptr Operand], 0ffffhgood2; Кількість <32767:
; print ErrorOver222, 0_str errorover, overlen, 34h; повідомлення про переполненіі2:
stc; cf = 1
jmp n_good2; Вийдемо з перетворення
good2: clc; cf = 0_good2: dec_bin64
; ----------------- conv64; конвертаціяdx didi, offset operandclear64: mul6410; dx: ax = ax * 10over_flow3; Перехід, якщо CF = 1di, offset operandsi, offset bufmov64 dl, [bx] ; Виберемо чергову ASCII-цифру
xor dh, dh
sub dl, 30h; Утворюємо двійковечисло
cmp dl, 0hBddl, 9h Bd
call add64; Проміжна сума
jc over_flow3; Перехід, якщо CF = 1
inc bx
loop cycl2; Продовжимо, якщо cx> 0
clc; Ні, скинемо прапор CF = 1
jmp last3:
; print ErrorBad222, 0_str errorbad, badlen, 34h last_flow3:
; print ErrorOver222, 0_str errorover, overlen, 34h: di dx conv64
; --------------------- Bindec cx, 21; Розмір буфера в байтах
Blank: mov [byte bx], '' ; Очистимо буфер, тобто заповнимо його пробілами
inc bxBlank bx; Встановимо адресу останнього елемента буфера
push [word ptr operand +6] AX, [word ptr Operand +6] AX, AX; Встановимо прапор знака SF
jns trans
push bx; Перейдемо до перетворення, якщо SF = 0
mov bx, offset Operand
call neg64; Змінимо знак
pop bx
trans:
push bx
mov bx, 10
call Div64; ax = quot (dx: ax/10), dx = rem (dx: ax/10) [word ptr Rem], '0 '; Сформуємо десяткову ASCII-ціфруsi, offset resultdi , offset operandmov64bxAL, [BYTE REM] [byte bx], AL ; Занесемо в буферbx; Рух назад [word ptr Operand +6], 0000htrans; Кількість <32767 [word ptr Operand +4], 0000htrans; Кількість <32767 [word ptr Operand +2], 0000htrans; Кількість <32767 [word ptr Operand], 0000h trans; Кількість <32767
pop ax; Відновити вихідне число,
or ax, ax; Встановимо прапор знака SF
jns out_trans; Виходимо з підпрограми, якщо SF = 0
mov [byte bx], '-' ; Запишемо знак '-&...