主题:我写的一个汇编程序,有些问题,希望高手指点一下!
该程序是实现将用户输入的字符串中的'a'转换成'A',该程序利用一个循环实现字符串的查找改写功能,程序通过调用中断实现了要求清屏,设置光标位置,要求用户输入,打印输出功能,但编译连接后,我输入as没有反映,当我输入很长一串字符时准确打印,希望高手帮忙看看是怎么回事,可通过qq或者邮箱联系我,谢了!
程序代码如下:
TITLE CHANGE 'a' TO 'A'
.286
;堆栈定义
STACKS SEGMENT STACK
DB 32 DUP(?)
STACKS ENDS
;数据段定义,定义输入表
DATAS SEGMENT
PARA_LIST LABEL BYTE
MAXLEN DB 20
ACLEN DB ?
DATATEST DB 20 DUP(?),0DH,0AH,'$'
DATAS ENDS
;代码段
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
;定义子过程
;输出中断过程
OUTPUT PROC NEAR
PUSHA
MOV AH,9
INT 21H
POPA
RET
OUTPUT ENDP
;清屏中断过程
CLEAR PROC NEAR
PUSHA
MOV AH,02H
MOV BH,00
MOV DX,080AH
INT 10H
POPA
RET
CLEAR ENDP
;设置页面属性
CURSOR PROC NEAR
PUSHA
MOV AX,0600H
MOV BH,61H
MOV CX,0000
MOV DX,184FH
INT 10H
POPA
RET
CURSOR ENDP
;退出中断设置
EXIT PROC NEAR
PUSHA
MOV AH,4CH
INT 21H
POPA
RET
EXIT ENDP
;输入中断过程
INPUT PROC NEAR
PUSHA
MOV AH,0AH
INT 21H
POPA
RET
INPUT ENDP
;子过程定义结束
;主过程
BEGIN:
MOV AX,DATAS
MOV DS,AX
LEA DX,PARA_LIST
CALL INPUT
XOR CX,CX
MOV CL,ACLEN
MOV BX,OFFSET MAXLEN
;逐字符比较,将'a'转换成'A'
S:
CMP BYTE PTR[BX+2],61H
JNE Z
MOV BYTE PTR[BX+2],41H
Z:
INC BX
LOOP S
CALL CLEAR
CALL CURSOR
LEA DX,DATATEST
INC DX
CALL OUTPUT
CALL EXIT
CODES ENDS
END BEGIN
;程序结束
程序代码如下:
TITLE CHANGE 'a' TO 'A'
.286
;堆栈定义
STACKS SEGMENT STACK
DB 32 DUP(?)
STACKS ENDS
;数据段定义,定义输入表
DATAS SEGMENT
PARA_LIST LABEL BYTE
MAXLEN DB 20
ACLEN DB ?
DATATEST DB 20 DUP(?),0DH,0AH,'$'
DATAS ENDS
;代码段
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
;定义子过程
;输出中断过程
OUTPUT PROC NEAR
PUSHA
MOV AH,9
INT 21H
POPA
RET
OUTPUT ENDP
;清屏中断过程
CLEAR PROC NEAR
PUSHA
MOV AH,02H
MOV BH,00
MOV DX,080AH
INT 10H
POPA
RET
CLEAR ENDP
;设置页面属性
CURSOR PROC NEAR
PUSHA
MOV AX,0600H
MOV BH,61H
MOV CX,0000
MOV DX,184FH
INT 10H
POPA
RET
CURSOR ENDP
;退出中断设置
EXIT PROC NEAR
PUSHA
MOV AH,4CH
INT 21H
POPA
RET
EXIT ENDP
;输入中断过程
INPUT PROC NEAR
PUSHA
MOV AH,0AH
INT 21H
POPA
RET
INPUT ENDP
;子过程定义结束
;主过程
BEGIN:
MOV AX,DATAS
MOV DS,AX
LEA DX,PARA_LIST
CALL INPUT
XOR CX,CX
MOV CL,ACLEN
MOV BX,OFFSET MAXLEN
;逐字符比较,将'a'转换成'A'
S:
CMP BYTE PTR[BX+2],61H
JNE Z
MOV BYTE PTR[BX+2],41H
Z:
INC BX
LOOP S
CALL CLEAR
CALL CURSOR
LEA DX,DATATEST
INC DX
CALL OUTPUT
CALL EXIT
CODES ENDS
END BEGIN
;程序结束