Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

MAC283 CLASSWORK NO 11 a. (Classwork is due before your next class.) 1. Write a line by line explanation to this program. 2. What does the program do at every routine?Explain. explain step by step...

1 answer below »
MAC283 CLASSWORK NO 11 a. (Classwork is due before your next class.)
1. Write a line by line explanation to this program. 2. What does the program do at every routine?Explain.
explain step by step using Microsoft words here is the code
.model small XXXXXXXXXXstack 100h   .data  msg1 db 13, 10, "Enter any number --> ", "$" msg2 db  "Enter an operation +,- * or /  --> ",13, 10, "$" msg3 db  "The Operation is --> ", "$" msg4 db  "The result is --> ", "$" By_base dd 21 by_10 dd 10  ; 32 bits variable with initial value = 10 sp_counter db 0 ; 8 bits variable with initial value of zero disp_number dd 0 ; 32 bits variable with initial value = 0 disp_number2 dd 0 disp_number3 dd 0 op_type db 0 last_key dd 0 ; 32 bits variable with initial value of zero remainder db 0 .code   main proc 	mov ax,@data ; set up data segment 	mov ds,ax XXXXXXXXXXmov dx,offset msg1 	call display_message  	call m_keyin 	 	call operation 	mov dx,offset msg1 	call display_message  	call m_keyin 	cmp op_type, "+" 	jnz short skip_plus 	 	call op_plus 	 	skiP_plus: 	cmp op_type, "-" 	jnz short skip_minus 	call op_minus 	 skip_minus: 	 	cmp op_type, "*" 	jnz short skip_mul 	 	call op_mult 	 skip_mul: cmp op_type, "/" 	jnz short skip_div 	 	call op_div skip_div:	 	call m_display mov ax, 4c00h  int 21h   operation proc 	mov dx,offset msg2 rpt4: 	call display_message 	mov dx,offset msg3 	call display_message 	mov ah, 1 	int 21h 	cmp al, 30h 	jns rpt4 	mov op_type, al 	 	 ret operation endp  m_display proc 	mov dx,offset msg4 	call display_message 	mov eax, disp_number 	mov sp_counter, 0	  Base_lp:  LP1: 	mov edx, 0 	div By_Base 	push dx 	inc sp_counter 	cmp eax, 0 	jnz lp1  LP2: 	pop dx 	call display 	dec sp_counter 	jnz lp2 	mov edx, -8 	call display 	mov edx, by_base 	call display 	mov edx, -7 	call display 	 dec By_base 	mov eax, disp_number 	cmp By_base, 1 	jnz Base_lp 	 	ret 	 m_display endp  op_minus proc 	mov eax, disp_number2 	sub eax, disp_number3 	mov disp_number, eax 	ret op_minus endp	 op_div proc  mov eax, disp_number2 div disp_number3 mov disp_number, eax mov remainder, dl  call display call m_display mov dl, -16 call display  mov dl, remainder call display mov dl, -1 call display mov edx, disp_number3  call display   mov ax, 4c00h  int 21h  op_div endp  op_mult proc 	mov eax, disp_number2 	mul disp_number3 	mov disp_number, eax  ret op_mult endp op_plus proc 	mov eax, disp_number2 	add eax, disp_number3 	mov disp_number, eax 	ret op_plus endp display proc 	add dl, 30h 	cmp dl, 3ah 	js short skip_hex 	add dl, 7 Skip_hex: 	  	mov ah, 6 	int 21h 	ret 	display endp  display_message proc 	mov ah, 9 ; to display to screen the string pointed by the DX register. 	int 21h 	mov edx, 0 	ret display_message endp 	 m_keyin proc 	MOV disp_number, 0 	mov last_key, 0 	LP_key:; location in the program label 	mov eax, disp_number 	mul by_10  ; eax = (eax) * 10 	add eax, last_key 	mov DISP_NUMBER, eax  ; save it to the number to display 	 	mov ah, 1 ; enables a single key entry 	int 21h 	AND eax, 000000ffh 	cmp al, 13 ; compare the key entered to 13 i.e. ascii of CR 	jz short finkey ; if CR was pressed then exit the enter key routine 	sub al, 30h  ; remove the ascii from the number entered to get a pure number. 	MOV LAST_KEY, EAX  ; save the last digit entered 	jmp lp_key  ; unconditional jump to the enter key routine in a loop 	finkey:	 	MOV eax, DISP_NUMBER 	cmp DISP_NUMBER2,0 	jnz short skip 	MOV DISP_NUMBER2, EAX skip: 	MOV DISP_NUMBER3, EAX 	ret m_keyin endp   main endp end main 




Answered Same Day Jun 04, 2022

Solution

Anjali answered on Jun 05 2022
96 Votes
.model small XXXXXXXXXXstack 100h .data msg1 db 13, setting the datase here
10, "Enter any number --> ", "$" msg2 db "Enter an operation +,- * or / --> ",13, 10, "$" msg3 db "The Operation is --> ", "$" msg4 db "The result is --> ", "$" By_base dd 21 by_10 dd 10 ;
This code is all about setting the variables and perform the operation like using operators like +,- *
32 bits variable with initial value = 10 sp_counter db 0 ;
In this code a 32-bit variable having the values 10 is set and counter variable is set.
8 bits variable with initial value of zero disp_number dd 0;
8 bits variable with initial value = 0 disp_number2 dd 0 disp_number3 dd 0 op_type db 0 last_key dd 0 ;
32 bits variable with initial value of zero remainder db 0 .code main proc mov ax
32 bit variable is set having initial value equal to zero
@data ; set up data segment     mov ds,
ax XXXXXXXXXXmov dx,offset msg1     call display_message     call m_keyin          call operation     mov dx,offset msg1     call display_message     call m_keyin     cmp op_type, "+" jnz short skip_plus          call op_plus          skiP_plus:     cmp op_type, "-" jnz short skip_minus     call op_minus      skip_minus:          cmp op_type, "*" jnz short skip_mul     call op_mult      skip_mul: cmp op_type, "/"
This line of code represent the setting of data segment and sending the values to the auxiliary register on which the different operations like +,- * will working.
    
jnz short skip_div     call op_div skip_div:          call m_display mov ax, 4c00h int 21h ...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here