Не могу комментировать, поэтому я отправляю ответ таким образом. @Ira Baxter, отличный ответ. Я просто хочу добавить, что вам не нужно разделить 10 раз, когда вы разместили, что вы установили регистр cx в значение 10. Просто разделите число в топе до «ax == 0»
loop1: call dividebyten
...
cmp ax,0
jnz loop1
Вам также нужно сохранить количество цифр в исходном номере.
mov cx,0
loop1: call dividebyten
inc cx
В любом случае, вы помогли мне Ире Бакстер, есть только несколько способов оптимизации кода:)
Это касается не только оптимизации, но и форматирования. Если вы хотите напечатать номер 54, вы хотите напечатать 54 не 0000000054:)
Вы должны создать рекурсивную функцию, это означает, что сам вызов функции выполняется до тех пор, пока не будет выполнено условие, а затем он возвращает результат и проходит через стек ранее вызванной функции для определения конечных результатов. Вот так
<?php
// associative array containing array, string and object
$array = ['hello' => 1, 'world' => [1,2,3], '!' => ['hello', 'world'], 5 => new Helloworld()];
// class helloworld
class Helloworld {
public $data;
function __construct() {
$this->data = "I'm an object data";
}
}
//function to read all type of data
function recursive($obj) {
if(is_array($obj) or is_object($obj)) {
echo ' [ '.PHP_EOL;
foreach($obj as $key => $value) {
echo $key.' => ';
recursive($value);
}
echo ' ] '.PHP_EOL;
} else {
echo $obj.PHP_EOL;
}
}
// call recursive
recursive($array);
?>
Это печатает примерно так:
[
hello => 1
world => [
0 => 1
1 => 2
2 => 3
]
! => [
0 => hello
1 => world
]
5 => [
data => I'm an object data
]
]
Надеюсь, это поможет?