我目前正在学习汇编语言。我已经能够创建一个快速的短函数来将两个数字从最小到最大交换。我正在应用相同的基本基础来使用三个数字执行此操作,但每次执行比较时,它都会进入无限循环。我通过使用来声明这个函数*60
。如何正确地将三个数字从小到大排序?另外,有没有一种方法可以让相同的函数在不进行任何额外更改的情况下执行两个和三个数字?
一些汇编程序的语法略有变化。这里是我目前正在使用的一个教育组件 Little Man 计算机模拟器的链接。
使用两个数字进行交换:
INP //Input x number
STO 99 //Store x number
INP //Input y number
STO 98 //Store y number
BR 60 //Jump to function *60
HLT //End run
*60 //Number SWAP function
LDA 99 //Load x
STO 87 //Move x to mailbox 87
LDA 98 //Load y
STO 86 //Move y to mailbox 86
SUB 87 //Subtract y - x
BRP 71 //Branch to line 71 if result is positive
LDA 86 //SUB 87 gives a negative result- then y is smallest number. Load y
OUT //Display y
LDA 87 //Load x- the greater number.
OUT //Display x
HLT //End here since y > x
LDA 87 //BRP 71 branches here- then x is smallest number
OUT //Display x
LDA 86 //y is the greater number
OUT * //display y