自己定義一組有符號的位元組數(小於100個),
然後將其分別存入兩個陣列中,其中正數和負數的個數分別存入各自陣列的第乙個單元,
最後顯示正數的個數和負數的個數,形式為:「+n」和「-m」,
要求:統計部分用乙個過程完成,顯示部分用乙個過程或軟中斷完成,
軟中斷的向量自己根據系統要求決定。
提問者採納 2014-06-13 19:51
;---------------------------
assume cs:cc, ds:qw
;---------------------------
qw segment
m_1 db 12, 13, 10, -5, -85, 37, 92, -25, 94, 10, -36
db 1, 100, 12, -37, 85, -6, 28, 125, 34, 17, -92
lll equ $ - m_1
m_p db 101 dup(0)
m_n db 101 dup(0)
msg db 13, 10, 'press any key to continue ... $'
o_p db 13, 10, '+$'
o_n db 13, 10, '-$'
qw ends
;---------------------------
cc segment
start:
mov ax, qw
mov ds, ax
; call tongji
call display
exit:
lea dx, msg
mov ah, 9
int 21h
mov ah, 7
int 21h
mov ah, 4ch
int 21h ;返回dos
;---------------------------
tongji:
mov bx, offset m_1
mov si, offset m_p
mov di, offset m_n
mov cx, lll
lp: mov al, [bx]
cmp al, 128
jb zheng
mov [di + 1], al
inc di
inc m_n
jmp next
zheng:
mov [si + 1], al
inc si
inc m_p
next:
inc bx
loop lp
ret;---------------------------
display:
lea dx, o_p
mov ah, 9
int 21h
mov al, m_p
mov ah, 0
call output
lea dx, o_n
mov ah, 9
int 21h
mov al, m_n
mov ah, 0
call output
ret;---------------------------
output:
mov bx, 10
mov cx, 0
ol1:mov dx, 0
div bx
add dl, '0'
push dx
inc cx
cmp ax, 0
jnz ol1
mov ah, 2
ol2:pop dx
int 21h
loop ol2
ret;---------------------------
cc ends
end start
;---------------------------
提問要求的過程,這裡都有了,並且使用了簡便形式。
程式執行結果如下:
c:\masm>ww
+15-7
press any key to continue ...
c:\masm>
提問者評價:謝謝。
80x86組合語言 分類統計
組合語言的程式設計題!急 有100個學生成績,存放在以data為首址的位元組儲存單元中。試統計其中90 含90 以上的人數,60 90 含60 之間的人數,60以下的人數,分別存入max,middle,min三個變數中。15 分鐘前 做而論道 十七級 最快回答 assume ds qq,cs cc ...
組合語言 80x86定址方式
1 立即定址方式 立即定址方式中指令的運算元是8位或16位立即數,並直接出現在指令中。例如 mov al,10h 源運算元為立即定址 執行後al 10h mov ax,0a48h 源運算元為立即定址 執行後ax 0a48h 立即定址只能用於源運算元,不能用於目的運算元。2 暫存器定址方式 暫存器定址...
80x86組合語言定址方式介紹
運算元直接包含在指令 中,可以是8或者16位。立即數作為指令的一部分,直接從biu指令佇列取出,因此速度更快。唯一缺點 只能作為源運算元。指令中所需的運算元在cpu某個暫存器中,可以是8位 16位段暫存器,這個操作完全在cpu內部,因此執行也很快。以下指令需要cpu以外的東西參與用符號或者常數表示 ...