**功能
隨機輸入兩個整數,然後計算這兩個數的最小公倍數和最大公約數,並作為計算結果輸出。
#include "stdio.h"
#include "conio.h"
int main()
a=num1;
b=num2;
while(b!=0)//一直重複賦值和計算,直到找到正確結果
printf(「gongyueshu:%d\n」,a);//輸出結果
printf(「gongbeishu:%d\n」,num1*num2/a);
}.data
#輸出字串,需要提前定義,
msg_prf1: .ascii "please input twe numbers\0"
msg_prf2: .ascii "gongyueshu\0"
msg_prf3: .ascii "gongbeishu\0"
.text
.globl main
main:
#printf(「please input two numbers:\n」) $v0等於4輸出字串
la $a0, msg_prf1
li $v0, 4
syscall
#scanf("%d",num1); $v0等於5輸入整數,給暫存器$t0
li $v0, 5
syscall
move $t0, $v0
#scanf("%d",num2); $v0等於5輸入整數,給暫存器$t1
li $v0, 5
syscall
move $t1,$v0
#int temp=0;定義變數temp給$t2,並賦初始值等於0
li $t2, 0
#if成功temp=num1;num1=num2;num2=temp;如果$t0
#者位置
bgt $t1,$t0, sub1
sub1:#交換$t0,$t1 ,$t2當作乙個中間變數
move $t2, $t0
move $t0, $t1
move $t1, $t2
#int a=0;把$t3的值賦0
li $t3, 0
#int b=0;把$t4的值賦0
li $t4, 0
#a=num1; b=num2;
move $t3, $t0 #把$t0的值賦給$t3,
move $t4, $t1 #把$t1的值賦給$t4,
#while迴圈部分,一直計算,其中的值一直在變化
loop:
rem $t2, $t3, $t4 #計算 $t3,$t4的模運算,結果存$t2
move $t3, $t4 #把$t4的值賦給$t3
move $t4, $t2 #把$t2的值賦給$t4
bgt $t4, 0, loop #while裡面的條件$t4>0
#printf(printf(「gongyueshu:%d\n」,a);
la $a0, msg_prf2 #把$a0的值賦變成要輸出的字串
li $v0, 4 #$v0值為4輸出字串
syscall
#輸出公約數a
move $a0, $t3 #把$t3值賦給$a0,$a0的值用來輸出
li $v0,1 #$v0值為1輸出整數
syscall
#printf(「gongbeishu:%d\n」,num1*num2/a」)
la $a0, msg_prf3 #把$a0的值賦變成要輸出的字串
li $v0, 4 #$v0值為4輸出字串
syscall
#計算最小公倍數
mul $t0, $t0, $t1 #計算最小公倍數$t0,$t1的乘,放在$t0
div $t0, $t0, $t3 #$t0,$t3相除,結果 放$t0
#輸出最小公倍數
move $a0, $t0 #輸出$t0
li $v0,1 #$v0值為1輸出整數
syscall
1、輸出字串時$v0=4
輸出結果:
2、輸入資料時$v0=5
輸入結果,輸入6和9
3、$t0的值變為輸入的值6
4、執行過程是暫存器的變化如下:
5、執行結果為3和18
mips組合語言筆記
因為乙個課程涉及mips組合語言,自己做一些筆記。部落格還有乙個b站的,查mips能查到那個文章。注意 彙編使用的位址也是邏輯位址,有偏移量,通過硬體進行轉化。比如乙個 la操作就會進行對記憶體的好幾次訪問 具體暫存器操作貼乙個圖 1 往a0裡寫資料。3種方式。1 寫立即數 li a0 1 2 暫存...
MIPS組合語言實現選擇排序
mips組合語言實現排序演算法,其實並不難。只要你掌握了基本的指令語句,並且熟悉c或c 相關演算法,即可輕鬆寫出來。對於mips組合語言還不太熟悉的夥伴,可以參考下面這篇部落格 它的具體實現 如下 c include using namespace std int main num index nu...
組合語言 AT T組合語言
這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...