首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

这些代码不知道什么意思求标注解决方案

2012-03-09 
这些代码不知道什么意思求标注DATA SEGMENTARRAY DB 1,2,3,4,5,6,一1,一2,一3,0,0,0LENG EQU $-ARRAY数组

这些代码不知道什么意思求标注
DATA SEGMENT
  ARRAY DB 1,2,3,4,5,6,一1,一2,一3,0,0,0
  LENG EQU $-ARRAY;数组长度
  POSI DB?:正数个数
  NEGT DB?:负数个数
  ZERO DB?:零的个数
  POSIEVEN DB?:正偶数
  POSIODD DB?:正奇数
  NEGTEVEN DB?:负偶数
  NEGTODD DB?:负奇数
  :用于打印提示的字符串定义
  POSICHAR DB 'Positive:$’
  NEGTCHAR DB 'Negtive:$’
  ZEROCHAR DB 'Zero:$’
  EVENCHAR DB' Even:$’
  ODDCHAR DB' Odd:$’
  CR DB ODH,OAH,'$';回车换行的ASCII码
  DATA ENDS
  : ---------------------
  CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
  : -------------------------------------------------------
START: MOV AX,DATA
  MOV DS,AX
  MOV SI,OFFSET ARRAY-1
  MOV CL,LENG:数组长度赋予CL
  MOV AL,O
LOP: CMP CL,O;循环控制条件:数组长度减为零
  JE CALC:为零则跳出
  INC Sl
DEC CL
  MOV BL,[SI】I采用基址加变址寻址
  CMP BL,AL;和零比较
  JG ISPOSI:是正数跳转
  JE ISZERO;是零跳转
  JL ISNEGT;是负数跳转
: ---------------------------------------------------
ISPOSI: INC POSI:正数个数加一
  AND BX.1
  ADD POSIEVEN,BL;和1与之后的结果加到正偶数中
JMP LOP
ISZERO: INC ZERO
  JMP LOP
ISNEGT: INC NEGT:负数个数加一
AND BX.1
  ADD NEGTEVEN,BL;和1与之后结果加到负偶数中
  JMP LOP
:-------------------------------------------------------
CALC: MOV AH,POSI
  MOV AL,POSIEVEN
  SUB AH,AL;计算正奇数个数
  MOV POSIODD,AH
  MOV AH,NEGT
  MOV AL,NEGTEVEN
  SUB AH,AL;计算负奇数个数
  MOV NEGTODD,AH
: ----------------------------------------------------
PRINT::打印正数提示符和正数(奇偶)个数
  MOV AH,09H
  MOV DX,OFFSET POSICHAR
  INT 21H
  MOV AH,02H
  MOV DL,POSI
  ADD DL,30H
  INT 21H
  MOV AH,09H
  MOV DX,OFFSET EVENCHAR
  INT 21H
  MOV AH,02H
  MOV DL,POSIEVEN
  ADD DL,30H
  INT 21H
  MOV AH,09H
  MOV DX,OFFSET ODDCHAR
  INT 21H
MOV AH,02H



   
  MOV DL,POSIODD
  ADD DL,30H
  INT 21H
  MOV DX,OFFSET CR
  MOV AH,09H
  INT 21H
: --------------------------------------------------
  :打印负数提示符和负数(奇偶)个数
  MOV AH,09H
  MOV DX,OFFSET NEGTCHAR
  INT 21H
  MOV AH,02H
  MOV DL,NEGT
  ADD DL,30H
  INT 21H
  MOV AH,09H
  MOV DX,OFFSET EVENCHAR
  INT 21H
  MOV AH,02H
  MOV DL,NEGTEVEN
  ADD DL,30H
  INT 21H
  MOV AH,09H
  MOV DX,OFFSET ODDCHAR
  INT 21H
  MOV AH,02H
  MOV DL,NEGTODD
  ADD DL,30H
  INT 21H
  MOV DX,OFFSET CR
MOV AH,09H
  INT 21H
  MOV AH,09H
  MOV DX,OFFSET ZEROCHAR
  INT 21H
  MOV AH,02H
  MOV DL,ZERO
  ADD DL,30H
  INT 21H
EXT: MOV AX,4COOH
  INT 21H
:-----------------------


CODE ENDS


END START
数据区待统计的数据为:
1,2,3,4,5,6,一1,一2, 一3,0,0,0
结果如下图所示。


[解决办法]
这不是汇编么,好多年不见了,帮顶
[解决办法]
查“汇编”语言书籍。。。

只是上学时学过,记得:

INT 21H // 是中断 21H 的意思,DOS系统功能调用!

像 MOV AH/DL/AL/DX **H // 都是往具体寄存器写值,这里 AH/DL/AL/DX 代表寄存器,**H 代表 16进制数(00--FF);

只记得这些了!

热点排行