Как запустить данный код ассемблера - Assembler
Формулировка задачи:
Как или при помощи чего запустить данный код? пробовал с помощью TASM.EXE и TLINK.EXE пришет почти в каждой строке ошибка
; multi-segment executable file template.
data segment
s1 db 'vvedite chislo v vosmerichnoii sisteme schislenia:$'
s2 db 'chislo v dvoichnoi sisteme schislenia:$'
s3 db 'chislo v vosmerichnoi sisteme schislenia:$'
s4 db 'chislo v desiatichnoi sisteme schislenia:$'
s5 db 'invertirovat nechetnie bity:$'
s6 db 'rezmer chisla bolhe 2 bait:$'
s7 db 'vmesto cifru vveden drugoi simvol:$'
buf db 8,0
bufs db 8 dup(0)
chislo dw 0
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;ustanovka kursora
xor ax,ax
mov ah,02h
mov dh,0
mov dl,0
int 10h
;vivod s1
lea dx,s1
mov ah,9
int 21h
call perenos
;sbros bufera
v2:mov cx,7
lea di,bufs
mov al,13
rep stosb
v3:mov ah,0Ah
lea dx,buf
int 21h
;proverka vvedeni li simvoli
lea si,bufs
lodsb
cmp al,'-'
jne v4
lodsb
v4:cmp al,13
je v3
mov cx,6
dec si
v5:lodsb
cmp al,13
je v6
cmp al,48
jl v7
cmp al,55
jg v7
v6:dec cx
cmp cx,0
jne v5
jmp v8
;vivod s2
v7:call perenos
lea dx,s7
mov ah, 9
int 21h
call perenos
jmp v2
;proverka znaka
v8:lea si,bufs
lodsb
cmp al,'-'
je v13
;proverka vvedeno pol chislo razmerom 2 baita
lea si,buf[1]
lodsb
cmp al,5
jle v10
cmp al,7
jl v9
lodsb
cmp al,'0'
jg v12
v9:lodsb
cmp al,'0'
jg v12
;dekodirovanie pol chisla
v10:lea si,buf[1]
lodsb
xor cx,cx
mov cl,al
xor bx,bx
v11:lodsb
and ax,7
sal bx,3
or bx,ax
loop v11
mov chislo,bx
jmp v16
;vivod s3
v12:call perenos
lea dx,s6
mov ah, 9
int 21h
call perenos
jmp v2
;proverka vvedeno otr chislo razmerom 2 baita
v13:lea si,buf[1]
lodsb
cmp al,7
jl v14
inc si
mov cl,al
dec cl
lodsb
cmp al,'1'
jl v14
jg v12
mov di,si
repne scasb
cmp cx,0
jne v12
;dekodirovanie otr chisla
v14:lea si,buf[1]
lodsb
xor cx,cx
mov cl,al
dec cx
inc si
v15:lodsb
and ax,7
sal bx,3
or bx,ax
loop v11
neg bx
mov chislo,bx
;vivod s2
v16:call perenos
lea dx, s2
mov ah, 9
int 21h
call perenos
;vivod v dvoichnoi sisteme schislenia
mov bx,chislo
mov cx,16
o1:mov dx,bx
rol dx,1
mov bx,dx
and dx,1
add dl,030h
mov ah,2
int 21h
loop o1
;vivod s3
call perenos
lea dx, s3
mov ah, 9
int 21h
call perenos
;vivod v shesnadcaterichnoi sisteme schislenia
mov bx,chislo
mov dx,bx
rol dx,1
mov bx,dx
and dx,1
add dl,030h
mov ah,2
mov al,dl
int 21h
mov cx,5
o2:mov dx,bx
rol dx,3
mov bx,dx
and dx,7
add dl,030h
mov ah,2
int 21h
loop o2
;vivod s4
call perenos
lea dx, s4
mov ah, 9
int 21h
call perenos
;vivod v desiatichnoi sisteme schislenia
mov cx,5
mov bx,10
cmp chislo,0
jge o3
mov ah,2
mov dl,'-'
int 21h
o3:mov ax,chislo
cwd
idiv bx
mov chislo,ax
cmp dx,0
jge o7
neg dx
o7:push dx
loop o3
mov cx,5
o6:pop dx
add dl,030h
mov ah,2
int 21h
loop o6
;vivod s5
call perenos
lea dx, s5
mov ah, 9
int 21h
call perenos
;invertiruem
mov cl,buf[1]
lea si,bufs
o8:lodsb
mov ah,al
not al
and al,010101010b
and ah,001010101b
or al,ah
mov ch,8
mov bl,al
z1:mov dl,bl
rol dl,1
mov bl,dl
and dl,1
add dl,030h
mov ah,2
int 21h
dec ch
cmp ch,0
jg z1
loop o8
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
perenos proc
mov ah,2 ;s novoi stroki
mov dl,0dh
int 21h
mov ah,2 ;s nacala stroki
mov dl,0ah
int 21h
ret
perenos endp
ends
end start ; set entry point and stop the assembler.Решение задачи: «Как запустить данный код ассемблера»
textual
Листинг программы
o7: push dx loop o3 mov cx,5 o6: pop dx