Как запустить данный код ассемблера - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5