汇编 解释下列每句代码的含义,及这句代码在程序中的作用,,详解 10
DATASEGMENTARRAYDB0,0,0,16,0,88,72,0,35,42,99COUNTEQU$-ARRAYDATAENDSCODESEGMENTASSUME...
DATA SEGMENT
ARRAY DB 0,0,0,16,0,88,72,0,35,42,99
COUNT EQU $ - ARRAY
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE , DS:DATA
START:MOV AX , DATA
MOV DS , AX
MOV CX , COUNT
LEA DI , ARRAY
DEC DI
MOV DL , -1
AGAIN:INC DL
INC DI
CMP BYTE PTR[DI] , 0
LOOPZ AGAIN
JNZ DONE
OR DL , 30H
DISPLAY:MOV AH , 02H
INT 21H
DONE:MOV AH , 4CH
INT 21H
CODE ENDS
END START 展开
ARRAY DB 0,0,0,16,0,88,72,0,35,42,99
COUNT EQU $ - ARRAY
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE , DS:DATA
START:MOV AX , DATA
MOV DS , AX
MOV CX , COUNT
LEA DI , ARRAY
DEC DI
MOV DL , -1
AGAIN:INC DL
INC DI
CMP BYTE PTR[DI] , 0
LOOPZ AGAIN
JNZ DONE
OR DL , 30H
DISPLAY:MOV AH , 02H
INT 21H
DONE:MOV AH , 4CH
INT 21H
CODE ENDS
END START 展开
展开全部
DATA SEGMENT ;定义数据段,
ARRAY DB 0,0,0,16,0,88,72,0,35,42,99 ;一字节数组块
COUNT EQU $ - ARRAY ;定义名字常量. 数组 赋以 COUNT
DATA ENDS ;结束数据段定义
CODE SEGMENT ;定义代码段
ASSUME CS:CODE , DS:DATA ;指定代码段开始,数据段的段寄存器CS和DS
START:MOV AX , DATA ;程序开始.
MOV DS , AX ;装入数据段段地址
MOV CX , COUNT ;装入段地址 名字常量
LEA DI , ARRAY ;装入数组地址到目的变址寄存器
DEC DI ; DI 减1
MOV DL , -1 ; -1 送DX低8 位
AGAIN:INC DL : DL 增1,计数
INC DI ; 下一地址
CMP BYTE PTR[DI] , 0 ;地址单元中的数与 0 比较
LOOPZ AGAIN ;ZF=1 转AGAIN 标号地址
JNZ DONE ;ZF=0 转 DONE
OR DL , 30H ;DL 与30H 进行或运算
DISPLAY:MOV AH , 02H ; 中断参数02H 送 AH
INT 21H ;DOS中断调用,显示ASCII 码
DONE:MOV AH , 4CH ; 中断参数4CH 送 AH
INT 21H ;DOS中断调用,结束程序
CODE ENDS ;结束代码段定义
END START ; 结束 START 开始的程序段
程序功能: 顺次读ARRAY 中数据,不为0 送显示.本程序显示16 后则停止.
供参考
ARRAY DB 0,0,0,16,0,88,72,0,35,42,99 ;一字节数组块
COUNT EQU $ - ARRAY ;定义名字常量. 数组 赋以 COUNT
DATA ENDS ;结束数据段定义
CODE SEGMENT ;定义代码段
ASSUME CS:CODE , DS:DATA ;指定代码段开始,数据段的段寄存器CS和DS
START:MOV AX , DATA ;程序开始.
MOV DS , AX ;装入数据段段地址
MOV CX , COUNT ;装入段地址 名字常量
LEA DI , ARRAY ;装入数组地址到目的变址寄存器
DEC DI ; DI 减1
MOV DL , -1 ; -1 送DX低8 位
AGAIN:INC DL : DL 增1,计数
INC DI ; 下一地址
CMP BYTE PTR[DI] , 0 ;地址单元中的数与 0 比较
LOOPZ AGAIN ;ZF=1 转AGAIN 标号地址
JNZ DONE ;ZF=0 转 DONE
OR DL , 30H ;DL 与30H 进行或运算
DISPLAY:MOV AH , 02H ; 中断参数02H 送 AH
INT 21H ;DOS中断调用,显示ASCII 码
DONE:MOV AH , 4CH ; 中断参数4CH 送 AH
INT 21H ;DOS中断调用,结束程序
CODE ENDS ;结束代码段定义
END START ; 结束 START 开始的程序段
程序功能: 顺次读ARRAY 中数据,不为0 送显示.本程序显示16 后则停止.
供参考
追问
每一步的意思我差不多知道 但它的作用是什么 在程序中起的作用
追答
知道了每一步的意思,应该就不难理解它的作用.它是围绕着设计者要实现的功能而选用的。开始要布置安排好代码、数据、堆栈等作业环境,然后程序指针指向代码段地址,程序开始运行的地址。再后来就是为了实现设计功能而展开的数据搬移、比较、运算、循环转移等工作。从单指令来看,就是忙碌的数据搬运,但从总体上看,就是这些搬搬运运工作才实现了强大的功能。
注意:计算机的工作方式就是实现设计目的而将数据搬来搬去,而且要人井井有条。这对你分析理解程序的功能大会有帮助的。
展开全部
额经过破译:
数据段数组DB 0,0,0,16,0,88,72,0,35岁,42岁,99美元ARRAYDATA ENDSCODE计数方程——假定CS:代码段,DS:DATASTART:MOV斧头、数据MOV DS,斧头MOV残雪,计数LEA DI,数组12月DI MOV DL,一句:公司DL . DI CMP字节PTR(DI),0 LOOPZ再次JNZ做或DL,30 hdisplay:MOV啊,02 h INT 21小时做:MOV啊,4 ch INT 21 hcode结束结束的开始
你这个是游戏吗
数据段数组DB 0,0,0,16,0,88,72,0,35岁,42岁,99美元ARRAYDATA ENDSCODE计数方程——假定CS:代码段,DS:DATASTART:MOV斧头、数据MOV DS,斧头MOV残雪,计数LEA DI,数组12月DI MOV DL,一句:公司DL . DI CMP字节PTR(DI),0 LOOPZ再次JNZ做或DL,30 hdisplay:MOV啊,02 h INT 21小时做:MOV啊,4 ch INT 21 hcode结束结束的开始
你这个是游戏吗
追问
不是游戏,,就是普通的汇编代码,此程序的意思就是从一组数组中找到第一个不为零的一个数输出其下标
追答
cunfu49的破译比我的好选他的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询