題目及解答
統計由DATA開始的字節數據串中負元素的個數,數據個數在COUNT單元,統計結果存入RLT單元。
8086匯編:
; 統計數字中負數的個數【循環中加了個if else】
assume ds:datasg
datasg segmentdata db 1,-2,-3,-1,-4,0,-2 count dw 7 ; 數組有8個數字plr dw ? ; 數字為負數的個數datasg endsassume cs:code
code segment
start:mov ax,datasgmov ds,axmov dl,0 ; 暫存數據mov ax,0 ; 記錄負數個數mov bx,offset data ; 遍歷數組mov cx,counts:; 判斷是否 <0mov dl,[bx]cmp dl,0jl ok ; < 0jmp no ; >= 0ok:inc axno:inc bxloop smov plr,axmov ax,4c00hint 21h
code ends
end start
MIPS匯編
.datanumArray: .byte -2,-3,-4,-6,8,0,-2arrayCount: .word 7 # 數組大小plr: .space 32 # 負數的個數.text
.globl main
main:la $t2,numArray # 數組首地址li $t3,0 # 存放負數的個數lw $t0,arrayCount # 循環次數li $t1,0 # 相當于for循環的int i = 0s:lb $s0,($t2)blt $s0,0,okj nook:addi $t3,$t3,1no:addi $t2,$t2,1addi $t1,$t1,1 # i = i + 1blt $t1,$t0,ssw $t3,plr # 寫回內存exit:li $v0,10syscall