check for these assembly code, why cant it compile in dosbox \"tasm\". what is m
ID: 3767296 • Letter: C
Question
check for these assembly code, why cant it compile in dosbox "tasm". what is missing?
.Model small
.stack 100h
.code
BASE64 DB "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DB "abcdefghijklmnopqrstuvwxyz0123456789+/"
BUFFER DB '000','$'
mov ecx, L
mov esi, sourc
;data from source table
mov edi, character
push ebp
mov ebp, Bufferout
source:
xor eax, eax
;Reading data using Source table
mov ah, byte ptr[esi]
mov al, byte ptr[esi+1]
;readingnext address
shl eax, 16
mov ah, byte ptr[esi+2]
;edx bit is set to 1
mov edx, eax
shl eax, 6
;first 6 bits
shr edx, 26
mov bl, byte ptr [edi+edx]
;put data or character in buffer
mov byte ptr[ebp], bl
inc ebp
;next value from the buffer
mov edx, eax
shl eax, 6
;next 6 bits
shr edx, 26
mov bl, byte ptr [edi+edx]
;Takes first character from the buffer
mov byte ptr[ebp], bl
inc ebp
;takes next character from the buffer
mov edx, eax
shl eax, 6
;done first 6 bits
shr edx, 26
mov bl, byte ptr [edi+edx]
;put char in buffer
mov byte ptr[ebp], bl
inc ebp
;manipulate in edx bitset4
mov edx, eax
shl eax, 6
;done first 6 bits
shr edx, 26
mov bl, byte ptr [edi+edx]
;Character is stored in the buffer
mov byte ptr[ebp], bl
inc ebp
;next value stored in the buffer
add esi, 3
sub ecx, 3
cmp ecx, 3
jge source
;information still present to convert
xor eax, eax
;padding to zero
cmp ecx, 0
jz finish
;reading next data
mov ah, byte ptr[esi]
mov al, byte ptr[esi+1]
shl eax, 16
mov ah, byte ptr[esi+2]
;information read
sub ecx, 3
;+ve inverse
neg ecx
;byte information which needs padding
mov edx, ecx
;padded bits equated to zero
mov esi, 0xFFFFFF
;calculating number of shifts to convert to base64
lea ecx, dword ptr[ecx*8+8]
shl esi, cl
;masking unwanted data
and eax, esi
mov ecx, edx
;byte 1 in edx
mov edx, eax
shl eax, 6
shr edx, 26
;storing next data into the buffer
mov bl, byte ptr [edi+edx]
mov byte ptr[ebp], bl
;next bufer value in ebp
inc ebp
;byte 2 in edx
mov edx, eax
shl eax, 6
shr edx, 26
;Stores characters into the buffer
mov bl, byte ptr [edi+edx]
mov byte ptr[ebp], bl
inc ebp
;byte 3 in edx
mov edx, eax
shl eax, 6
shr edx, 26
;stores character into the buffer
mov bl, byte ptr [edi+edx]
mov byte ptr[ebp], bl
;Next buffer
inc ebp
;byte 3 in edx
mov edx, eax
shl eax, 6
shr edx, 26
;Storing char into buffer
mov bl, byte ptr [edi+edx]
mov byte ptr[ebp], bl
;next avlue in the buffer
inc ebp
;'returns' padded count
mov eax, ecx
finish:
test eax, eax
jz end
;padded data =
sub ebp, eax
;CharacterPadded:
mov byte ptr[ebp], 0x3d
inc ebp
dec eax
jnz CharacterPadded
end:
Explanation / Answer
Erroe in the given program :
missing DB represents Define byte which is used to declare a byte type variable or to store a byte in memory location.
For example
Byte 1 DB 10h
Byte 2 DB 255 which is equal to 0ffh and this is the maximum possible value for a given byte
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.