 our system call operations will give us a way to interact with our operating system. This is, the most common use for this is for input and output operations. When we want to read something from the console or print something out to the console. There are a couple other things we can do with our system call operations. But the most common are just things like reading integers, printing strings and integers and quitting our program. So, our system call operation actually involves one instruction, CIS call. This is the instruction that actually transfers, this is the instruction that actually transfers control from your program to the operating system. But there are a whole bunch of system calls you can make, and we'll need to be able to tell the operating, we'll need to be able to tell the operating system which one we're interested in. And what any parameters that operation has as well. So, the system call is essentially like a function call. But it, but the setup will work a little differently from the function calls that we'll see later. In this case, we're going to put the operation that, we're going to put a number that corresponds to the operation that we want to do into register V zero. So, there are, so I've got a handful of examples here. For example, I would put one in V zero if I want to print out 32 bit integer. I would put four into V zero if I want to print a string. If I just want to quit my program, I would put ten in and then I would follow that up with the system, with the CIS call instruction. But most of these operations are going to require some other parameters or have some results. If we've got some other parameters, like we want to print an integer or a string, then we're going to put those parameters into register A zero. There are a couple that require register A one as well. But the majority of the simple ones that you'll get used to just use A zero. So if I wanted to print an integer, I might, I would put one into V zero. I might put, I would put my integer, say 42 into. So if I wanted to print a, so if I wanted to print out an integer, I would put one into V zero, so I can print an integer. I would put my integer into A zero, say 42. And then I would call, then I would run my CIS call instruction. This would tell the operating system I want to print an integer. It would take that integer out of A zero, and then display it on my console. Printing a string will work pretty similarly, except I'm going to have to tell the operating system where my string is. My string will be somewhere in memory, and we'll just tell it where that location in memory is instead. My string will be somewhere in memory, and we'll just tell the operating system where that string is, instead of actually providing the string directly. On the other hand, if I want to read something from the console, like an integer, I'm not going to have any extra parameters. I'm just going to get something back from the operating system. I'm just going to get something back from the operating system once it's done reading that data. So in this case, I'm not going to have any. So in this case, I would still put five into v zero, so the operating system knows that I want to read an integer. I would go ahead and make the CIS call, at which point the operating system would go off to the console, wait for an integer. At which point the operating system would go off to the console, wait until the user enters some data, and then try to interpret that as an integer. Once it has that data, it's going to put it into v zero. It will overwrite that, it will overwrite the five that's in v zero with whatever, with whatever number the user entered. But now I will be able to go, but now I will be able to go take that data out of v zero and use it for whatever purpose I had. But now I will be able to go take that data out of v zero and use it for whatever I'm interested in.