Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Mahasagar Langhani Computer Architecture 14CS22

LAB 5a
CODE
main proc
.386 mov sum,0
.model flat,c mov ecx,10
.stack 100h .repeat
printf mov temp,ecx
PROTO arg1:Ptr Byte,printlist:VARARG INVOKE printf,ADDR msg1fmt,ADDR
scanf msg1
PROTO arg2:Ptr Byte,inputlist:VARARG INVOKE scanf,ADDR in1fmt,ADDR num
.data mov eax,sum
msg1fmt byte 0AH,"%s",0 add eax,num
in1fmt byte"%d",0 mov sum,eax
msg2fmt byte 0AH,"%s%d",0AH,0AH,0 mov ecx,temp
msg1 byte "Enter a integer: ",0 .untilcxz
msg2 byte "The sum is: ",0 INVOKE printf,ADDR msg2fmt,ADDR
temp sdword ? msg2,sum
num sdword ? ret
sum sdword ? main endp
temp2 sdword ? end
.code

OUTPUT
Mahasagar Langhani Computer Architecture 14CS22

LAB 5b
CODE
.386 mov sum,0
.model flat,c .while 1
.stack 100h INVOKE printf, ADDR msg1fmt, ADDR
Printf msg1
PROTO arg1:Ptr Byte,printlist:VARARG INVOKE scanf, ADDR in1fmt, ADDR num
Scanf cmp num,0
PROTO arg2:Ptr Byte,inputlist:VARARG jl endl
.data mov eax,sum
msg1fmt byte 0AH,"%s",0 add eax,num
in1fmt byte"%d",0 mov sum,eax
msg2fmt byte 0AH,"%s%d",0AH,0AH,0 .endw
msg1 byte "Enter an integer or a negative endl: nop
integer to stop: ",0 INVOKE printf, ADDR msg2fmt, ADDR
msg2 byte "The sum is ",0 msg2, sum
num sdword ? ret
sum sdword ? main endp
.code end
main proc

OUTPUT
Mahasagar Langhani Computer Architecture 14CS22

LAB 5c
CODE
.386 INVOKE scanf, ADDR in1fmt, ADDR n
.model flat,c .if x<0 || n<0
.stack 100h INVOKE printf, ADDR errfmt, ADDR errmsg1
scanf PROTO arg2:Ptr Byte, inputlist:VARARG .else
printf PROTO arg1:Ptr Byte, printlist:VARARG .if x==0 && n==0
.data INVOKE printf, ADDR errfmt, ADDR errmsg2
in1fmt byte "%d",0 .else
msg1fmt byte "%s",0 mov ecx,1
msg3fmt byte "%s%d",0Ah,0Ah,0 mov ans,1
errfmt byte "%s",0Ah,0Ah,0 .while ecx <= n
errmsg1 byte 0Ah,"Error: Negative x and/or y",0 mov eax,ans
errmsg2 byte 0Ah,"Error: Undefined answer",0 imul x
msg1 byte "Enter x: ",0 mov ans,eax
msg2 byte "Enter n: ",0 inc ecx
msg3 byte 0Ah,"The answer is: ",0 .endw
x sdword ? mov i,ecx
n sdword ? INVOKE printf, ADDR msg3fmt, ADDR msg3,
ans sdword ? ans
i sdword ? .endif
.code .endif
main proc ret
INVOKE printf, ADDR msg1fmt, ADDR msg1 main endp
INVOKE scanf, ADDR in1fmt, ADDR x end
INVOKE printf, ADDR msg1fmt, ADDR msg2

OUTPUT

You might also like