Как запустить данный код ассемблера - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д