Ввести с клавиатуры в hex- виде коды, вывести на экран сумму в 10-ой системе счисления - Assembler

Узнай цену своей работы

Формулировка задачи:

Выдает не то что нужно,а задание гласит так:
Ввести с клавиатуры в hex- виде коды для занесения в регистры ВХ и СХ. Вывести на экран сумму содержимого этих регистров в десятичном виде
.386
dseg segment use16
txt1  db  13,10,'Type HEX: $'
txt2  db  13,10,'Result..: $'
dseg ends
 
cseg segment use16
assume cs:cseg,ds:dseg
m1:
    mov cx,dseg
    mov ds,cx
        ;////ввод с клавы в bx
xor bx,bx              
m3:
mov ah,1               
int 21h
cmp al,13              
je short stop          
sub al,30h             
cmp al,9               
jbe short m5           
sub al,11h             
cmp al,5               
jbe short m4           
sub al,20h             
m4:
add al,10              
m5:
shl bx,4             
or bl,al              
jmp short m3          
stop:                
        ;////ввод с клавы в cx
xor cx,cx             
m6:
mov ah,1              
int 21h
cmp al,13             
je short stop1         
sub al,30h             
cmp al,9              
jbe short m8           
sub al,11h             
cmp al,5               
jbe short m7          
sub al,20h             
m7:
add al,10              
m8:
shl cx,4               
or cl,al              
jmp short m6           
stop1: ;////сложение и результат в ax
ret
 
;pop bx cx
add bx,cx
mov ax,bx
        ;////вывод в котором происходит непонятное
pusha               
mov bx,10           
xor cx,cx          
isDiv:                 
xor dx,dx       
movsx edx, dx         
div bx              
push  dx             
inc   cx             
or ax,ax           
jnz short  isDiv           
isOut:                   
pop   ax              
add   al,30h          
int   29h             
loop  isOut           
popa
ret
 
exit:
xor ax,ax
int   16h
int   20h
 
cseg ends
end m1

Решение задачи: «Ввести с клавиатуры в hex- виде коды, вывести на экран сумму в 10-ой системе счисления»

textual
Листинг программы
model   small
.data
dbInp   db  10,13,'Enter HEX-code:$'
dbOut   db  10,13,'Decimal result:$'
dbErr   db  10,13,'Error overflow!$'
.stack  100h
.code
start:  mov ax,@data
    mov ds,ax
    call    inpNum
    mov bx,di
    call    inpNum
    mov cx,di
    add bx,cx
    mov ax,bx
    call    outNum
    mov ax,4C00h
    int 21h
;
inpNum: mov ah,9
    lea dx,dbInp
    int 21h
    xor di,di
    mov si,16
@@01:   xor ax,ax
    int 16h
    mov ah,al
    cmp al,13
    jz  @@03
    cmp al,'0'
    jb  @@01
    cmp al,'9'
    jbe @@02
    and al,223
    mov ah,al
    cmp al,'A'
    jb  @@01
    cmp al,'F'
    ja  @@01
    sub ah,7
@@02:   sub ah,'0'
    push    ax
    int 29h
    pop ax
    mov al,ah
    and ax,0fh
    xchg    di,ax
    xor dx,dx
    mul si
    add di,ax
    or  dx,dx
    jz  @@01
    mov ah,9
    lea dx,dbErr
    int 21h
    jmp inpNum
@@03:   ret
;
outNum: push    ax
    mov ah,9
    lea dx,dbOut
    int 21h
    pop ax
    xor cx,cx
    mov si,10
@@04:   xor dx,dx
    div si
    push    dx
    inc cx
    or  ax,ax
    jnz @@04
@@05:   pop ax
    or  al,'0'
    int 29h
    loop    @@05
    ret
    end start

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


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

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

8   голосов , оценка 3.75 из 5
Похожие ответы