函数调用w /参数

时间:2015-10-04 13:38:10

标签: assembly x86 x86-16

我正在努力创建函数并在汇编中调用它们。

函数<?php define('DB_HOST', 'localhost'); define('DB_NAME', 'tumy'); [tumy is the database name] define('DB_USER','root'); define('DB_PASSWORD',''); $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); function newUser() { $username = $_POST['username']; $password = $_POST['password']; $name = $_POST['name']; $telNo = $_POST['telno']; [telno refers to telephone number] $emailAddress = $_POST['email']; $query = "INSERT INTO 'customer' (username,password,name,telNo,emailAddress) VALUES ('$username','$password','$name','$telNo','$emailAddress')"; $data = mysql_query($query) or die(mysql_error()); if($data) { echo "YOUR REGISTRATION IS COMPLETED"; } } function SignUp() { if(empty($_POST['uname'])) { $query = mysql_query("SELECT * FROM customer WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error()); if(!$row = mysql_fetch_array($query) or die("SORRY.YOU ARE ALREADY REGISTERED USER.".mysql_error())) { newUser(); } } } if(isset($_POST['submit'])) { SignUp(); } ?> 应该从gfx_draw_h(color, x_1, y_1, x_2)(x_1, y_1)画一条线,但我无法得到(x_2, y_1)的值来与x_2内的当前位置进行比较{ {1}}。

另外,另一段代码是否正确(没有堆栈损坏)?

这是我的代码:

gfx_draw_h.repeat

1 个答案:

答案 0 :(得分:2)

add esp, 16

由于这是16位代码,因此在堆栈上推送4个参数只需要弹出8个字节。

gfx_draw_h:
 pop ax                  ; color
 pop cx                  ; x
 pop dx                  ; y

由于 gfx_draw_h 是一个子程序(它是call ed),因此堆栈上有一个返回地址。你的第一个pop ax删除了这个!您可以写下以下内容:

gfx_draw_h:
 mov bp, sp
 mov ax, [bp+2] ;color
 mov cx, [bp+4] ;x
 mov dx, [bp+6] ;y

遵循此逻辑更改问题行(不要使用EBP!):

cmp cx, [bp + 8]      ; !!! THIS IS THE ISSUE !!!