Деление чисел и их последующий вывод - Assembler

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

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

Задание такое: Вводиться число, если больше 0 то выполняем x2\ (c+d), меньше x(c+5), равно 0 то (2b-d)\2a. По алгоритму вроде правильно но беда при выводе, где в уравнении было деление. И еще(другое задание), В числе Х найти вторую по величине цифру, если в числе могут быть одинаковые цифры. У меня беда с разделение числа по цифрам, div есть, но привычного mod нету, первую цифру вроде бы отделил,а с последующими косяк. Помогите советами) Спасибо! Z1
include emu8086.inc
; multi-segment executable file template.
 
data segment
a db 5
b db -6
c db 2 
d db 1  \
x dw ?
    pkey db "press any key...$"
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax    
    call SCAN_NUM   
    mov x,cx
     xor ax,ax
 l1:   cmp x,0 
    jnz m1 
    mov al,b
    add al,al
    sub al,d
    mov bl,a
    add bl,bl
    div bl 
   jmp l
 M1:  cmp x,0
      jns M2
      mov al,c
      add al,5
      mul x
      jmp L
 m2:    mov ax,x
        mul x
        mov bl,c 
        add bl,d
        div bl    
        
       L:   CALL   pthis
            DB  13, 10, 'Otvet: ', 0
 
       CALL PRINT_NUM 

    ; wait for any key....    
    mov ah, 1
    int 21h
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
  DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS  ;
DEFINE_PTHIS
end start ; set entry point and stop the assembler.
Z2
; multi-segment executable file template.
 
data segment
   x1 db ?
   x2 db ?
   x3 db ?
   x4 db ?
    pkey db "press any key...$"
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
 
     mov ax,0FCD7h 
     mov di,ax 
     mov bx,10
      div bx 
      mov x1,dl 

    lea dx, pkey
    mov ah, 9
    int 21h        ; output string at ds:dx
    
    ; wait for any key....    
    mov ah, 1
    int 21h
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start ; set entry point and stop the assembler.

Решение задачи: «Деление чисел и их последующий вывод»

textual
Листинг программы
    mov ax,0FCD7h
    mov bx,10
    lea di,x0
@@01:   xor dx,dx
    div bx
    mov [di],dl
    inc di
    or  ax,ax
    jnz @@01

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


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

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

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