Деление чисел и их последующий вывод - Assembler
Формулировка задачи:
Задание такое: Вводиться число, если больше 0 то выполняем x2\ (c+d), меньше x(c+5), равно 0 то (2b-d)\2a. По алгоритму вроде правильно но беда при выводе, где в уравнении было деление.
И еще(другое задание), В числе Х найти вторую по величине цифру, если в числе могут быть одинаковые цифры. У меня беда с разделение числа по цифрам, div есть, но привычного mod нету, первую цифру вроде бы отделил,а с последующими косяк. Помогите советами) Спасибо!
Z1
Z2
Листинг программы
- 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.
Листинг программы
- ; 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д