也是求下面程序每步的说明,很急,明早要用

[复制链接]
查看11 | 回复2 | 2010-12-8 11:11:48 | 显示全部楼层 |阅读模式
从键盘接收一个字符串(假定输入字符串长度大于3),若该字符串中包括字符“A”,则显示其后的连续四个字符,若不包含字符“A”,则将字符插入到该串的第一个字符后并显示。
DATA SEGMENT
BUF DB5H

DB?

DB 5H dup(?)
LF DB 0AH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX, DATA

MOV DS, AX

LEA DX, BUF

MOV AH,0AH

INT 21H



MOV DL ,LF

MOV AH,02H

INT 21H

MOV BL ,BUF+1

MOV BH ,0

MOV BUF[BX+2] ,'$';设置字符串结束标志

DEC BX

MOV SI,0
XUHUAN1:


MOV Al, BUF[SI+2]

CMP Al,'A'

JE OUTPUT

CMP SI,BX

JZXUHUAN2

INC SI

JMP XUHUAN1
XUHUAN2:MOV SI,0

JMP XUHUAN3


XUHUAN3:

MOV Bl, BUF[SI+4]

M0V BUF[SI+5],Bl

INC SI

MOV Al,BUF[SI+5]

CMP Al,'$'

JNE XUHUAN3

JMP INSERT
INSERT:MOV SI,0

MOV BL,'A'

MOV BUF[SI+2], BL

MOV BUF[SI+1],LENGTHOF BUF

JMP OUTPUT
OUTPUT: MOV DX,OFFSET BUF

MOV AH,09H

INC 21H

MOV AX,4C00H

INT 21H


CODE ENDS
END START

回复

使用道具 举报

千问 | 2010-12-8 11:11:48 | 显示全部楼层
汇编好久没看忘了,不过大概记得几个重点:1、DATA SEGMENT数据定义,就跟C中的定义变量一样,比如说int i之类差不多。2、CODE SEGMENT代码定义,就跟C中的函数差不多。3、START函数的开始运行地方。看函数从START:的地方开始看起。(1)MOV AX, DATA
MOV DS, AX加载数据定义(在高级语言中会自动帮你完成,汇编得自己实现)(2)LEA DX, BUF
MOV AH,0AH
INT 21H加载数据存放地址,再调用中断指令,至于中断指令是做啥的我就忘了,课本目录应该有中断向量表,多查吧。太常用了。(3)MOV DL ,LF
回复

使用道具 举报

千问 | 2010-12-8 11:11:48 | 显示全部楼层
阿萨对萨达
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行