Assembly

Course
Time
13 hours 15 minutes
Difficulty
Beginner
CEU/CPE
14

Video Transcription

00:01
Hello. This is Dr Miller, and this is Episode 8.2 of Assembly.
00:05
Today, we're going to write a program using floating point numbers.
00:10
So here is our program description. So we're gonna write a program to calculate the following
00:15
the area of a circle which is pi r squared and the circumference of a circle, and then we'll have the user into those values.
00:26
Alright, So I've already created the directory.
00:29
So the top, we're gonna do our definitions. And so we got a few definitions we're gonna have toe put in here.
00:36
So, for example, all enter pie,
00:43
so we'll define it is a cue word because I don't give us more precision.
00:53
Six.
00:55
I give some example. Digits, you can do some. Or if you'd like to do this on your own,
01:00
we're gonna have X, which is a value that these is gonna enter. We'll start that off zero, and that will be an imager.
01:08
The area
01:11
that is going to be a floating point number so we'll define it is a cured so that it has 64 bits.
01:22
Here's our circle or circumference.
01:26
Go ahead and to find that is also a cured zero,
01:30
and then I'm just gonna to find the number two.
01:34
We'll use that later.
01:38
All right? And then we got a couple different formats. So one is for scan F.
01:45
So I find this bites
01:53
and then are printed format
02:06
and then percent f is the
02:09
formats specify air for printing off a floating point number.
02:14
Here. We had 10 for a new line and then zero.
02:20
We got a couple externals
02:23
scan, huh,
02:25
friend?
02:30
Yes.
02:31
All right, so now we're ready to go into our program. So first off, I have to have to add the pointer
02:38
to the scan of format. So that is I'm gonna push X for the hat,
02:47
push our format and then call
02:51
scan of
02:53
and then after that, X should have the value that we care about. So that's the number that we're going to use for our radius. I guess our might be a better term, but I'm using X.
03:07
So because we pushed to things, we have to correct a stack.
03:13
Okay, Now, put a comment here, so we know.
03:20
All right.
03:22
Next step is to load our data onto the floating point stack. So the first thing that I'm gonna do is I'm gonna go ahead and load
03:30
pie.
03:32
So, Ethel de Floating Point load, This is a que
03:37
word and I'm gonna load pie.
03:43
And then I want to multiply that by X. But X isn't manager, so f I and mole. It's a floating point imager. Mole,
03:53
We're using a D word for X,
03:57
so I'm pi times are times are so just go ahead and multiply again.
04:03
Okay,
04:05
so now I have my result. It should be on top of the stack. So I took pie and then I multiplied it and it replaced that on top of the stack.
04:15
And so this is calculating my
04:17
area.
04:19
So now I need to save that
04:21
floating point store and then p is for Pop because I don't want that to stay on the stack,
04:30
go ahead and store that in area
04:34
and then
04:35
So I used pie here as
04:39
just a number that I typed in. But there is also a floating point load high which will actually load pie on top of the stack
04:49
and then
04:50
so the
04:53
the circumference is two pi r. So I've got pie, and I need to multiply that by two
05:00
So I have my number two.
05:03
Okay. And then I need to multiply that by X, which is our radius.
05:10
That's also on you, ***.
05:15
And then I need to
05:18
Here we are
05:26
doing that calculation,
05:29
and then we need to store that. So we want to floating points
05:33
store and pop.
05:36
It's a cue word,
05:41
and they're just telling how big. So that way it knows what to write.
05:45
This is
05:46
circumference.
05:48
All right, so now comes the fun part of
05:50
trying to print these off. So because these are Q words, I have to basically push two things onto the stack.
05:59
So we're gonna do printing here.
06:02
So with this, we need to I'm gonna move into the A X
06:08
value at circumference
06:11
plus four.
06:13
***. I'll get me
06:15
four of the bites and then I can push that onto the stack,
06:18
and then I need to
06:20
move into yea x,
06:24
the value. It's a conference. So I gets me the other four bites.
06:29
I don't have to push that on in the stack.
06:33
So here we're loading
06:36
circumference,
06:39
and now we want to do the same thing for the area. So remember, we have to do them reverse orders. That's why we did circumference. First
06:45
movie X area, close four.
06:50
Push the axe,
06:53
move yaks
06:55
area
06:57
without you it area,
07:00
push the X
07:01
And then we're gonna have to
07:03
push our format.
07:08
And it's called P for friends.
07:12
And then we're gonna call print F.
07:16
Now, if we go back, we're going to count how many things we pushed on the stack for this printing. So we got
07:21
one. So 48 12
07:27
16. And I missed my ex here.
07:31
16
07:33
in decimal, which is 10. And hex right here and then 14. Hicks. So to correct a stack, we have to do ad
07:43
14. Add two tsp 14 hex.
07:48
And so that's your correct a stack for all the things we
07:51
pushed on the stack for our printing.
08:01
Looks like I have an air. So let's go and fix that
08:09
loading point.
08:13
Parents post some letters there,
08:22
and we messed one of them up. Okay, so it says area is zero conference is 6200
08:31
so let's go back in. Double check. So
08:46
ah, floating point store. Sea area.
08:52
That would be a cue word.
08:56
There we go.
09:01
All right. So it looks like we got the right results.
09:09
So as you can see, some of the debugging steps you have to go through and figure out which line you might have an air on
09:16
and go and see what operation? That you might have missed type so we could see that I had a typo. I've had a couple typos.
09:24
Um, but going through, at least the assembly will tell you that there is an air, and then he can go back and figure out where that air exists.
09:35
So today we built our example program. And then you saw that that was used in order to
09:43
demonstrate how we can load of floating point numbers. And then now we can print those off.
09:48
So in the future, we're gonna talk about conditions. So making decisions based on floating point numbers.
09:54
If you have questions, you can contact me via email at Miller MJ at you indicated I e d u and on Twitter at no house. 30

Up Next

Assembly

This course will provide background and information related to programming in assembly. Assembly is the lowest level programming language which is useful in reverse engineering and malware analysis.

Instructed By

Instructor Profile Image
Matthew Miller
Assistant Professor at the University of Nebraska at Kearney
Instructor