汇编语言(十五)之找出两个数组中的相同元素
生活随笔
收集整理的這篇文章主要介紹了
汇编语言(十五)之找出两个数组中的相同元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
找出兩個數組中的相同元素,并且輸出
程序運行:
?
代碼:
datas segmentA dw -1,-2, 3, 4, 5, 6, 7, 8, 9, 10,-11, 12, 13, 14, 15ACount dw ($-A)/2B dw -1, 2,-3, 4,-5, 6,-7, 8, 9,-10, 11,-12, 13,-14, 15,16,17,18,19,0BCount dw ($-B)/2C1 dw 30 dup(?)C1Count dw 0ouputlengthOfC1 db 'length of C1=$'ouputC1 db 0dh,0ah,'the same elemt(C1):$'datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks main proc far start:push dsmov ax,0hpush axmov ax,datas ;初始化dsmov ds,axmov cx,ACountmov bx,0 ;數組A的索引mov di,0 ;di數組C1的索引s: mov ax,A[bx] ;將數組A的元素移至axcall saveSameElemt ;保存ax與B中相同的元素add bx,type A ;數組A的索引移至下一個元素loop sshr di,1 ;di為數組C1的長度mov C1Count,di ;保存數組C1的長度lea dx,ouputlengthOfC1mov ah,9int 21hmov ax,C1Countcall unsignedPrintlea dx,ouputC1mov ah,9int 21hmov cx,C1Countmov bx,0s1:mov ax,C1[bx]call printmov dl,' 'mov ah,2int 21hadd bx,type C1 loop s1 retmain endpsaveSameElemt proc near;保存寄存器push cxmov cx,BCount mov si,0 ;數組B的索引save:cmp ax,B[si] ;比較ax與數組B的元素jne notEqual ;若不等,則跳轉mov C1[di],ax ;若相當,則保存于數組C1add di,type C1 ;數組C1下標移至下一個元素notEqual:add si,type B ;數組B的下標移至下一個元素loop save;恢復寄存器pop cx ret saveSameElemt endpprint proc near;ax=source;保存寄存器push cx push dxpush bxcmp ax,0 ; 比較ax與0大小jge notNegative ;若非0,則跳轉push ax ;若為0,保存axmov dl,'-' ;輸出負號mov ah,2 int 21hpop ax ;恢復axneg ax ;取ax的絕對值notNegative:mov bx,10 ;除數mov cx,0 ;計數器,記錄十進制數的位數ps:mov dx,0 ;無符號擴展div bx ;除10push dx ;保存余數inc cx ;計數器加1cmp ax,0h ;比較ax與0大小jnz ps ;若不等,則跳轉ps1:pop dx ;恢復余數add dl,30h ;將數字轉換為數字字符mov ah,2 ;輸出數字字符int 21hloop ps1 ;恢復寄存器pop bxpop dxpop cxret print endpunsignedPrint proc near;ax=source;保存寄存器push cx push dxpush bxmov bx,10 ;除數mov cx,0 ;計數器,記錄十進制數的位數ps:mov dx,0 ;無符號擴展div bx ;除10push dx ;保存余數inc cx ;計數器加1cmp ax,0h ;比較ax與0大小jnz ps ;若不等,則跳轉ps1:pop dx ;恢復余數add dl,30h ;將數字轉換為數字字符mov ah,2 ;輸出數字字符int 21hloop ps1 ;恢復寄存器pop bxpop dxpop cxret unsignedPrint endpcodes endsend main?
總結
以上是生活随笔為你收集整理的汇编语言(十五)之找出两个数组中的相同元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四面楚歌是什么故事 四面楚歌故事简述
- 下一篇: 汇编语言(十六)之三数值求和