汇编语言 输入字符串并输出所有非字母字符的前后导字符

来源:互联网 发布:减少sqlserver内存占用 编辑:程序博客网 时间:2024/04/29 06:36

1.输入字符串用10号中断,对缓冲区有格式规定,第一位未缓冲区大小,第二位保留,输入后储存字符串长度,从第三位开始是字符串。

2. 遍历字符串,按照A,Z,a,z的顺序依次CMP当前字符,按逻辑判断是不是非字母字符,如果是,转输出部分。

3.通过判断CX当前值,来判断该字符是不是第一个或最后一个字符,这两种情况输出要特别处理。

DATA SEGMENT    BUF DB 20,?,20 DUP(?)    CRLF DB 0AH,0DH,'$'DATA ENDSCODES SEGMENT    ASSUME CS:CODES,DS:DATASTART:    MOV AX,DATA    MOV DS,AX    MOV DX,OFFSET BUF    MOV AH,0AH    INT 21H    MOV DX,OFFSET CRLF    MOV AH,09H    INT 21H    MOV CL,BUF+1    LEA BX,BUF+2A0:MOV AL,[BX]CMP AL,'A'JB OUTPUTCMP AL,'Z'JB NEXTCMP AL,'a'JB OUTPUTCMP AL,'z'JB NEXTJB OUTPUTNEXT:INC BX    LOOP A0OUTPUT:AND CX,CXJZ OVERMOV AL,BUF+1AND AX,00FFHCMP CX,AXJZCUR PRE:MOV DL,[BX-1]MOV AH,02HINT 21HCUR:MOV DL,[BX]MOV AH,02HINT 21HCMP CX,1JZRTNLAT:MOV DL,[BX+1]MOV AH,02HINT 21HRTN:MOV DL,' 'MOV AH,02HINT 21HJMP NEXTOVER:MOV AH,4CHINT 21HCODES ENDS    END START


0 0
原创粉丝点击