已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。
生活随笔
收集整理的這篇文章主要介紹了
已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
只為記錄匯編作業
題目:已知字符串STRING以‘$’為結束標志;統計其中小寫字母的個數,結果送到COUNT單元,并把該字符串中的小寫字母變成大寫字母,其它字符保持不變。要求分別在屏幕上輸出原字符串以及修改后的字符串。
代碼如下:
;2.已知字符串STRING以‘$’為結束標志;統計其中小寫字母的個數,結果送到COUNT單元, ;并把該字符串中的小寫字母變成大寫字母,其它字符保持不變。 ;要求分別在屏幕上輸出原字符串以及修改后的字符串。 DATA SEGMENTSTRING DB '1a2a3aABCabc!@#$' ;定義字符串LEN DB $-STRING ;len用來記錄string長度COUNT DB 0 ;count用來記錄小寫字母個數 CRLF DB 0AH,0DH,"$" ;回車換行 DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR CX,CX ;CX初始化MOV CL,LEN ;設置循環次數LEA DX,STRING ;使dx指向string初始地址MOV AH,09H ;輸出原字符串INT 21HLEA BX,STRING ;使bx指向string初始地址 X: MOV AL,[BX] ;取bx指向地址所在的字符并放入al中CMP AL,'a' ;字符與小寫a作比較JB NEXT ;小于則跳轉next函數CMP AL,'z' ;字符與小寫z作比較JA NEXT ;大于則跳轉next函數INC COUNT ;使count自增1SUB AL,20H ;使當前的小寫字母變成小寫MOV [BX],AL ;把小寫字母變成大寫 NEXT:INC BX ;使bx指向下一個地址LOOP X ;做循環,cx-1 當cx=0時則退出循環,執行下一條語句LEA DX, CRLF;回車換行 MOV AH, 09H INT 21HLEA DX,STRING ;輸出更新后的字符串MOV AH,09HINT 21HLEA DX, CRLF;回車換行 MOV AH, 09H INT 21H ADD COUNT,30H ;讓count變成ascll碼并且輸出MOV DL,COUNTMOV AH,02HINT 21HMOV AH,4CH ;結束INT 21H CODE ENDS END START以下代碼可以輸出10個以上的小寫字母個數
;2.已知字符串STRING以‘$’為結束標志;統計其中小寫字母的個數,結果送到COUNT單元, ;并把該字符串中的小寫字母變成大寫字母,其它字符保持不變。 ;要求分別在屏幕上輸出原字符串以及修改后的字符串。 DATA SEGMENTSTRING DB 'aaaaaaaaaaaaaaaaaaaaaaaaaa!@#$' ;定義字符串 26個aLEN DB $-STRING ;len用來記錄string長度COUNT DW 0 ;count用來記錄小寫字母個數 CRLF DB 0AH,0DH,"$" ;回車換行ANS DB 6 DUP(0)TIMES DB 0 DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR CX,CX ;CX初始化MOV CL,LEN ;設置循環次數LEA DX,STRING ;使dx指向string初始地址MOV AH,09H ;輸出原字符串INT 21HLEA BX,STRING ;使bx指向string初始地址 X: MOV AL,[BX] ;取bx指向地址所在的字符并放入al中CMP AL,'a' ;字符與小寫a作比較JB NEXT ;小于則跳轉next函數CMP AL,'z' ;字符與小寫z作比較JA NEXT ;大于則跳轉next函數INC COUNT ;使count自增1SUB AL,20H ;使當前的小寫字母變成小寫MOV [BX],AL ;把小寫字母變成大寫 NEXT:INC BX ;使bx指向下一個地址LOOP X ;做循環,cx-1 當cx=0時則退出循環,執行下一條語句LEA DX, CRLF;回車換行 MOV AH, 09H INT 21HLEA DX,STRING ;輸出更新后的字符串MOV AH,09HINT 21HLEA DX, CRLF;回車換行 MOV AH, 09H INT 21H XOR AX,AX ;將count輸出MOV AX,COUNT ;將count放入ax中XOR BX,BX ;bx初始化MOV BX,10 ;將10放入bx中MOV DI,OFFSET ANS ;使di指向ans頭地址F:XOR DX,DX ;dx初始化DIV BX ;ax/bx 因為count是dw類型因此商在AX,余數在DX,這里的余數<=9,因此也在DLADD DL,30H ;將dl中的0-9變成ascll碼里的0-9方便輸出MOV [DI],DL ;將dl放入di指向地址的內容里INC DI ;di指針+1INC TIMES ;tiems+1,方便后面的倒敘輸出CMP AX,0 ;ax和0作比較,如果ax=0則說明已經被除完了JNE F ;如果ax≠0,則跳到f函數DEC DI ;di指針-1,此時指向的是最高位XOR CX,CX ;cx初始化MOV CL,TIMES ;把times給cl方便循環輸出 FUNCTION:MOV DL,[DI] ;把dl指向地址的內容給dl,并做dos單字符輸出操作MOV AH,2INT 21HDEC DI ;di指針-1LOOP FUNCTION ;cl>0則cl-1并且循環fuction,否則執行下一條語句 MOV AH,4CH ;結束INT 21H CODE ENDS END START總結
以上是生活随笔為你收集整理的已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法进阶面试题07——求子数组的最大异或
- 下一篇: Hackintosh Dell vost