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