题目及解答
统计由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