Перевод bin2hex с выводом в файл. (assembler)
[highlight=asm]
assume cs:CSEG, ds:CSEG
CSEG segment
org 100h
Start:
mov ax,cs
mov ds,ax
mov ah,9
lea dx,Mess1
int 21h
;Ввод первых 8 байт
push bx
mov dx,00000000b
mov bx,10000000b
mov cx,8
loop1: mov ah,01h
int 21h
cmp al,'0'
jz label1
cmp al,'1'
add dx,bx
label1: shr bx,1
loop loop1
;перевод первых 8 байт
pop bx
mov ax,dx
mov cx,16
mov di, offset digit1
call DwToHex
;Ввод вторых 8 байт
push bx
mov dx,00000000b
mov bx,10000000b
mov cx,8
loop2: mov ah,01h
int 21h
cmp al,'0'
jz label2
cmp al,'1'
add dx,bx
label2: shr bx,1
loop loop2
;перевод вторых 8 байт
pop bx
mov ax,dx
mov cx,16
mov di, offset digit2
call DwToHex
;создание файла
mov ah,3Ch
mov cx,100000b
mov dx,offset FileName
int 21h
;открытие файла
mov ax,3D02h
mov dx,offset FileName
int 21h
jc ErrorFile
;запись в файл первых 8 байт
mov Handle,ax
mov bx,ax
mov ah,40h
mov cx,40h
lea dx,digit1
int 21h
;запись в файл вторых 8 байт
mov Handle,ax
mov bx,ax
mov ah,40h
mov cx,40h
lea dx,digit2
int 21h
;закрытие файла
mov ah,3Eh
mov bx,Handle
int 21h
mov ah,9
lea dx,Mess3
int 21h
Exit:
mov ah,4ch
int 21h
ErrorFile:
mov ah,9
lea dx,Mess2
int 21h
jmp Exit
; Данные
Handle dw 0
Mess3 db 10,13,'Fail zagruzhen!$'
Mess2 db 10,13,'Ne ydalos otkrut fail'
FileName db 'C:\1\1.txt',0,'$'
Mess1 db 'Vvedite dvoichnoe 4xbaitovoe chislo: $'
Digit1 db 8 dup(?)
Digit2 db 8 dup(?)
; Процедуры
DwtoHex proc near
xor dx, dx
div cx
or ax, ax
jz Done
push dx
call DwToHex
pop dx
Done: mov si,dx
mov al,HEX[si]
mov [di],al
inc di
ret
HEX db '0123456789ABCDEF'
DwtoHex endp
CSEG ends
end Start
[/highlight]
Всё работает, только в файле, например при вводе 1111111111111111 я получаю:
FF___ГёДFF
$_Ј__HЈB_ЈD____єп_ё#%Н!_Њ___З___Ђ_&‹___ГЊШє`tѓВ_±_
Где FFFF в 1ой строке верное решение. Кто знает, как избавиться от «мусора» – помогите:confused: :confused: :confused: . Заранее Спасибо.