汇编语言——正数数组P和负数数组N
生活随笔
收集整理的這篇文章主要介紹了
汇编语言——正数数组P和负数数组N
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
試編寫一完整的匯編語言程序,將一個包含有20個數據的數組M分成兩個數組:正數數組P和負數數組N,并分別求出這兩個數組中數據的個數。
解決方案
DSEG SEGMENT COUNT EQU 20 ARRAY DW 20 DUP (?) ;存放數組 COUNT1 DB 0 ;存放正數的個數 ARRAY1 DW 20 DUP (?) ;存放正數 COUNT2 DB 0 ;存放負數的個數 ARRAY2 DW 20 DUP (?) ;存放負數 ZHEN DB 0DH, 0AH, ‘The positive number is:’, ‘$’ ;正數的個數是: FU DB 0DH, 0AH, ‘The negative number is:’, ‘$’ ;負數的個數是: CRLF DB 0DH, 0AH, ‘$’ DSEG ENDS CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG START: PUSH DS ;設置返回DOS SUB AX, AX PUSH AX MOV AX, DSEG MOV DS, AX ;給DS賦值 BEGIN: MOV CX, COUNT LEA BX, ARRAY LEA SI, ARRAY1 LEA DI, ARRAY2 BEGIN1: MOV AX, [BX] CMP AX, 0 ;是負數碼? JS FUSHU MOV [SI], AX ;是正數,存入正數數組 INC COUNT1 ;正數個數+1 ADD SI, 2 JMP SHORT NEXT FUSHU: MOV [DI], AX ;是負數,存入負數數組 INC COUNT2 ;負數個數+1 ADD DI, 2 NEXT: ADD BX, 2 LOOP BEGIN1 LEA DX, ZHEN ;顯示正數個數 MOV AL, COUNT1 CALL DISPLAY ;調顯示子程序 LEA DX, FU ;顯示負數個數 MOV AL, COUNT2 CALL DISPLAY ;調顯示子程序 RET MAIN ENDP DISPLAY PROC NEAR ;顯示子程序 MOV AH, 9 ;顯示一個字符串的DOS調用 INT 21H AAM ;將(AL)中的二進制數轉換為二個非壓縮BCD碼 ADD AH, ‘0’ ;變為0~9的ASCII碼 MOV DL, AH MOV AH, 2 ;顯示一個字符的DOS調用 INT 21H ADD AL, ‘0’ ;變為0~9的ASCII碼 MOV DL, AL MOV AH, 2 ;顯示一個字符的DOS調用 INT 21H LEA DX, CRLF ;顯示回車換行 MOV AH, 9 ;顯示一個字符串的DOS調用 INT 21H RET DISPLAY ENDP ;顯示子程序結束 CSEG ENDS ;以上定義代碼段 END START?
總結
以上是生活随笔為你收集整理的汇编语言——正数数组P和负数数组N的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言——100个数中的最大数
- 下一篇: 汇编语言——《分支与循环程序设计》实验任