Beruflich Dokumente
Kultur Dokumente
Code of python:
import os
print("Choose your option:\n1) Read the input from keyboard.\n2) Reat the input from a text
file.")
choice = int(input())
if choice == 9:
exit(0)
if choice == 1:
elif choice == 2:
exist = False
try:
file_content = f.read()
while(file_content.endswith("\n")):
file_content = file_content[0:-1]
exist = True
except:
data = ""
startAddress = ""
numberofbytes = 0
checksum = ""
sum = 0
sum1 = 0
for i in range(len(each_address)):
split = each_address[i].split(":")
address = split[0]
if i == 0:
startAddress = address
ADDRESSdata = split[1]
if len(ADDRESSdata)%2 != 0:
data = data+str(ADDRESSdata)
numberofbytes += int(len(ADDRESSdata)*0.5)
String = ""
len1 = 4 - len(startAddress)
string = str(hex(numberofbytes))[2:]
len2 = 2-len(string)
string = (len2*"0") + string
sum = 0
data1 = wrap(data, 2)
for i in range(len(data1)):
sum1 += 1
checksum = str(hex(sum1))[-2:]
print(hexformat)
filename = "out.txt"
try:
os.remove("out.txt")
except:
pass
fw.write(hexformat)
CODFE OF ASSEMBLY :
data segment
op db 0
line db 10,13,"$"
sum dw 0
bytes db 0
ask1 db 10,13,"Please enter your data in one line like: address:data address:data ..",10,13,"$"
counter db 0
file_handler dw 0
eom db 13,10,":00000001FF$"
int 21h
endm
int 21h
endm
int 21h
mov option, al
endm
int 21h
endm
readfilename macro
getchars:
int 21h
jz ready
mov [di], al
inc di
jmp getchars
ready:
endm
outp db "out.txt",0
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ds, ax
mov es, ax
printf intro
while:
getc op
jz Keyboard
jz File
printf error
jmp while
Keyboard:
printf ask1
scanf BUFFER
add si, 1
finished:
inc si
readAddress:
jz readData
mov al,[si]
mov [di], al
inc si
inc di
jmp readAddress
readData:
mov [di], al
inc di
readData1:
inc si
jz finished
jz cont
mov [bx], al
inc bx
jmp readData1
File:
printf ask2
readfilename
int 21h
mov file_handler,ax
jc fileError
mov bx,file_handler
int 21h
mov ah,3eh
mov bx,file_handler
int 21h
; filtering
jmp readAddress1
finished1:
add si, 2
readAddress1:
jz readData2
mov al,[si]
mov [di], al
inc si
inc di
jmp readAddress1
readData2:
mov [di], al
inc di
readData11:
inc si
cmp [si], 13
jz finished1
cmp [si], 10
jz finished1
jz cont
mov [bx], al
inc bx
jmp readData11
; filtering
cont:
mov al,'$'
dec di
mov [di], al
je cont1
dec bx
mov [bx], al
cont1:
mov cx, 0
getnumofbytes:
jz bytesdone
inc cx
inc si
jmp getnumofbytes
bytesdone:
mov ax, cx
mov cl, 2
div cl
mov bytes, al
mov ah,0
add sum, ax
num:
jz gotnum
inc counter
inc si
jmp num
gotnum:
mov al, 4
sub al,counter
addtoaddress:
cmp al, 0
je cont2
mov [di], bl
inc di
dec al
jmp addtoaddress
cont2:
jz cont3
mov [di], bl
inc di
inc si
jmp cont2
cont3:
mov cl, 4
cont4:
mov [di], bl
inc si
inc di
dec cl
cmp cl, 2
jz func
cmp cl, 0
jz func
jmp cont4
func:
call turn
add sum, dx
cmp cl, 2
je cont4
cont5:
cont6:
jz cont7
mov [di], al
inc si
inc di
mov [di], al
call turn
add sum, dx
inc si
jmp cont6
cont7:
add ax,0001h
mov ah,0
div dl
mov [di], ah
mov ah,0
div dl
inc di
mov [di], ah
inc bx
call turn2
mov [si], al
dec bx
call turn2
inc si
mov [si], al
mov si, offset bytesnum
mov ah, 0
div dl
mov [di], ah
mov ah,0
div dl
inc di
mov [di], ah
inc bx
call turn2
mov [si], al
dec bx
call turn2
inc si
mov [si], al
tohex:
mov cx, 0
mov [di], bl
inc di
printf line
mov al, 0
mov counter, al
started:
cmp counter, 5
je cc
jz tochecksum
mov [di], bl
inc cl
inc si
inc di
inc counter
jmp started
cc:
mov [di], bl
inc di
mov [di], bl
inc counter
inc di
jmp started
tochecksum:
inc cl
inc si
inc di
mov [di], bl
inc di
eof:
mov [di], bl
inc cl
inc si
inc di
jz ended
jmp eof
ended:
inc cl
mov counter, cl
printf hexformat
int 21h
mov file_handler, ax
inc counter
inc counter
mov cx, 0
int 21h
int 21h
jmp TheEnd
fileError:
mov al,'$'
deletion:
mov [si], al
inc si
loop deletion
printf error1
jmp File
finish:
readingerror:
printf error2
TheEnd:
printf succeed
int 21h
ends
turn proc
mov ah, 0
jl readingerror
jg l1
mul dl
jmp sec
l1:
cmp al, 'A'
jl readingerror
jg l2
mul dl
jmp sec
l2:
jl readingerror
jg readingerror
mul dl
sec:
inc bx
mov dx,ax
jl readingerror
jg l3
mov ah, 0
add dx, ax
jmp return
l3:
cmp al, 'A'
jl readingerror
jg l4
mov ah, 0
add dx, ax
jmp return
l4:
jl readingerror
jg readingerror
mov ah, 0
add dx, ax
return:
ret
endp
turn2 proc
mov ah, 0
cmp al, 0
jl readingerror
cmp al, 9
jg l5
jmp return1
l5:
jl readingerror
jg l6
jmp return1
l6:
jl readingerror
jg readingerror
return1:
ret
endp