CE119Lab01IT012Lab03 UIT có đáp án

8 197 0
CE119Lab01IT012Lab03 UIT có đáp án

Đang tải... (xem toàn văn)

Thông tin tài liệu

2.1 Sinh viên tìm hiểu tài liệu “Một số lệnh assembly MIPS bản” mô Lệnh (code) Giải thích Chức add $1, $2, $3 $1 = $2 + $3 Cộng giá trị (kết có dấu) addi $1, $2, $1 = $2 + Cộng giá trị với số (kết có dấu) addu $1, $2, $3 $1 = $2 + $3 Cộng giá trị (kết khơng có dấu) addiu $1, $2, $3 $1 = $2 + Cộng giá trị với số (kết khơng có dấu) sub $1, $2, $3 $1 = $2 - $3 Trừ giá trị (kết có dấu) subu $1, $2, $3 $1 = $2 - Trừ giá trị với số (kết khơng có dấu) and $1, $2, $3 $1 = $2 & $3 Phép toán logic andi $1, $2, $1 = $2 & Phép tốn logic (có số) or $1, $2, $3 nor $1, $2, $3 lw $1, 20($2) $1 = $2 | $3 $1 = ~($2 | $3) $1 = Memory[$2+20] sw $1, 20($2) $1 = Memory[$2+20] slt $1, $2, $3 if ($2 < $3) $1 = 1; else $1 = if ($2 < 3) $1 = 1; else $1 = if ($2 < $3) $1 = 1; else $1 = if ($2 < 3) $1 = 1; else $1 = slti $1, $2, $3 sltu $1, $2, $3 sltiu $1, $2, $3 Phép toán logic Phép toán logic Not -> or Chép word (4 byte) vị trí nhớ RAM vào ghi Lưu word ghi vào vị trí nhớ RAM So sánh bé So sánh bé số So sánh bé không dấu So sánh bé số không dấu Được gọi input output syscall việc thực thi lệnh cho biết chức lệnh sau: add, addi, addu, addiu, sub, subu, and, andi, or, nor, lw, sw, slt, slti, sltu, sltiu, syscall Code data var1: word text start: lw li sw 23 $t0, var1 $t1,5 $t1,var1 Giải thích # Khai báo vùng nhớ data # gán var1 = 23 (kiểu int) # Khai báo vùng nhớ chứa mã lệnh #Code # gán $t0 = var1 = 23 # gán $t1 = # cho var1 = $t1 hay var1 = .data array1: space 12 text start: la $t0,array1 li $t1,5 sw $t1,($t0) li $t1,13 sw $t1, 4($t0) li $t1, -7 sw $t1, 8($t0) li $v0,5 syscall data string1: asciiz "Print this \n" text main: li $v0,4 la $a0,string1 syscall # mảng arr1 có kích thước 12 byte liên tục # Gán mảng arr1 $t0 # Gán $t1=5 #lưu $t1 với byte = vào mảng $t0 # Gán $t1=13 #lưu $t1 có byte = 13 vào mảng $t0 # Gán $t1= -7 #lưu $t1 có byte = -7 vào mảng $t0 # Gán $v0=5 #sau kết thúc lệnh syscall ta nhập vào #lại giá trị $v0 #lệnh cout c++ #$v0 = #load địa string1 vào ghi $a0 #xuất ghi $a0 Bài A, Code data chuoi1: asciiz "Chao ban! Ban la sinh vien nam thu may? \n" chuoi2: asciiz "Hihi, minh la sinh vien nam thu ^-^" text la $a0,chuoi1 li $v0,4 move $t1,$v0 syscall la $a0,chuoi2 li $v0,4 move $t2,$v0 syscall Giải thích # Khai báo vùng nhớ data # cout chuoi1 # # cout chuoi2 # # code # load địa chuoi1 vào ghi $a0 # lưu $v0 với địa $a0 # lưu $v0 vào $t1 tránh bị trùng $a0 sau # in chuoi1 # load địa chuoi2 vào ghi $a0 # lưu $v0 với địa $a0 # lưu $v0 vào $t2 # in chuoi2 B,Biểu diễn nhị phân chuỗi C, Code data chuoi: asciiz text li $v0,8 la $a0,chuoi li $a1,30 syscall li $v0,4 move $t1,$v0 syscall Giải thích # Khai báo vùng nhớ data # # # viết chuỗi # load địa chuoi vào ghi $a0 # số kí tự tối đa nhập 29 # nhập # # lưu $v0 với địa $a0 # lưu $v0 vào $t1 tránh bị trùng $a0 sau # in chuoi d) Nhập vào số nguyên sau xuất tổng số nguyên Code data nhap1: asciiz "Nhap So Thu 1: " nhap2: asciiz "Nhap So Thu 2: " tong: asciiz "Tong la: " text main: la $a0,nhap1 add $v0,$0,4 syscall add $v0,$0,5 syscall add $t0,$0,$v0 la $a0,nhap2 add $v0,$0,4 syscall add $v0,$0,5 syscall Giải thích # Khai báo vùng nhớ data # biến nhap1 # biến nhap2 # biến tổng # # # load địa nhap1 vào ghi $a0 # lưu $v0 với địa $a0 # nhập # # Gán $v0=5 -> in # in biến # lưu $t0 = $v0 # # load địa nhap2 vào ghi $a0 # lưu $v0 với địa $a0 # # # Gán $v0=5 # nhập add $t1,$0,$v0 Tong: add $t2,$t0,$t1 la $a0,tong add $v0,$0,4 syscall add $a0,$0,$t2 add $v0,$0,1 syscall # Gán $t1 = $v0 # # # $t2 = $t0 + $t1 # load địa tong vào ghi $a0 # lưu $v0 với địa $a0 # # # load địa $t2 vào ghi $a0 # gán $v0 = -> xuất # Xuất Bt thanm khảo a,Assembly gì? Assembly loại ngơn ngữ lập trình cấp thấp cho vi xử lý thiết bị lập trình khác Ngơn ngữ tạo cách biên dịch mã nguồn từ ngơn ngữ lập trình cấp cao, chẳng hạn C, C++ - Trình bày trình chương trình viết ngơn ngữ C/C++ thực máy tính? Giai đồn tiền xử lý (Pre-processor) -> Giai đoạn dịch NNBC sang Asembly (Compiler) -> Giai đoạn dịch asembly sang ngôn ngữ máy (Asember) -> Giai đoạn liên kết (Linker) b Trình bày kiểu liệu MIPS32 kích thước kiểu liệu kiểu li êu: + word : biến ngun có kích thước word + byte ‘a’, ‘c’: mảng có phần tử, phần tử byte + space n : mảng có kích thước n byte liên tục + asciiz “hello” : chuỗi có kết thúc null c Trình bày cấu trúc nhớ chương trình C++(layout memory) - Memory layout của chương trình C/C++ gồm phần chính: Text Segment, Initialized Data Segment, Uninitialized Data Segment, Heap Stack d.Viết chương trình hợp ngữ nhập vào ba số a,b,c Kiểm tra in số lớn nhất, số bé nhất(không dùng vòng lặp) Code data _a: asciiz "a = " _b: asciiz "b = " _c: asciiz "c = " _max:.asciiz "max = " _min: asciiz "\nmin = " text main: la $a0,_a li $v0,4 syscall li $v0,5 syscall move $t0,$v0 la $a0,_b li $v0,4 syscall li $v0,5 syscall move $t1,$v0 la $a0,_c li $v0,4 syscall li $v0,5 syscall move $t2,$v0 #nhap xong slt $s0,$t1,$t0 beq $s0,$0, L1 j L2 L1: L2: L3: move $t4,$t0 move $t0,$t1 move $t1,$t4 slt $s0,$t2,$t0 beq $s0,$0, L3 j L4 move $t4,$t0 move $t0,$t2 Giải thích # Khai báo vùng nhớ data # biến a # biến b # biến c # biến max # biến # # # load địa a vào ghi $a0 # Gán $v0=4 -> in # # Gán $v0=5 -> nhập # # lưu $t0 = $v0 # # load địa b vào ghi $a0 # Gán $v0=4 -> in # # Gán $v0=5 -> nhập # # lưu $t1 = $v0 # # load địa c vào ghi $a0 # Gán $v0=4 -> in # # Gán $v0=5 -> nhập # # lưu $t2 = $v0 # #so sánh $t1 xuất # Xuất # # # $t5 = $t0 / $t1 # load địa tong vào ghi $a0 # lưu $v0 với địa $a0 # # load địa $t5 vào ghi $a0 # gán $v0 = -> xuất syscall G, thầy hướng dẫn # Xuất ... # mảng arr1 có kích thước 12 byte liên tục # Gán mảng arr1 $t0 # Gán $t1=5 #lưu $t1 với byte = vào mảng $t0 # Gán $t1=13 #lưu $t1 có byte = 13 vào mảng $t0 # Gán $t1= -7 #lưu $t1 có byte = -7... Gán $v0=4 -> in # # Gán $v0=5 -> nhập # # lưu $t0 = $v0 # # load địa b vào ghi $a0 # Gán $v0=4 -> in # # Gán $v0=5 -> nhập # # lưu $t1 = $v0 # # load địa c vào ghi $a0 # Gán $v0=4 -> in # # Gán... li êu: + word : biến nguyên có kích thước word + byte ‘a’, ‘c’: mảng có phần tử, phần tử byte + space n : mảng có kích thước n byte liên tục + asciiz “hello” : chuỗi có kết thúc null c Trình bày

Ngày đăng: 09/12/2021, 08:05

Tài liệu cùng người dùng

Tài liệu liên quan