求汇编语言代码详解(希望能有详细注释)

2024-11-29 00:41:10
推荐回答(2个)
回答(1):

我的建议是,你先把书上的汇编例子看一些,估计你还是学生。这个代码简单。

看例子的时候,把整个汇编代码的书写结构、格式要弄清楚,然后再是一些指令的用法。

稍微说一下:

NAME  SEARCH_MAX   @ 这前面的 NAME这个单词你肯定认识,你汇编例子中肯定有讲解,如果没讲的话,那本书可以烧了。同样的:
DATA  SEGMENT     @ DATA  这个单词要干什么?

新手看代码确实很痛苦,更何况是汇编?
但是,你不要看见代码一多就害怕,任何东西都是有框架结构的。汇编的框架结构无非就是:

------------------------------------------------------

    (说明)声明、定义
开始:
    代码部分
结束
-------------------------------------------------------

至于代码部分的指令,就单条单条对着书看。

@文件名 比如  hello.c  hello.s 等等
NAME  SEARCH_MAX

@数据段  
DATA  SEGMENT
BUFFER  DW  X1,X2,…,Xn
COUNT  EQU  $ - BUFFER
MAX    DW  ?
DATA  ENDS

@堆栈部分
STACK  SEGMENT  PARASTACK′STACK′
  DB  64DUP(?)
TOP  EQU  $ - STACK
STACK  ENDS

@表示以下是代码存放的段
CODE  SEGMENT
START  PROC   FAR
              ASSUME  CS: CODE,DS: DATA,SS: STACK
     
BEGIN: @代码开始执行的标签 以下真正的代码部分,也就是计算机会执行的指令部分,上面那些东西是一些打酱油但又是必须的东西,计算机不会去执行。
  PUSH  DS
  MOV  AX,0
  PUSH  AX
  MOV  AX,DATA
  MOV  DS,AX
  MOV  AX,STACK
  MOV  SS,AX
  MOV  AX,TOP
  MOV  SP,AX
MOV  CX,COUNT 
 LEA  BX,BUFFER
 MOV  AX,[BX]
 INC  BX
 DEC  CX
AGAIN:   CMP  AX,[BX]
  JGE  NEXT
  MOV  AX,[BX]
NEXT:   INC  BX
  LOOP  AGAIN
START       ENDP
CODE  ENDS @代码部分结束,对应着 上面的 CODE  SEGMENT
  END  BEGIN @对应着上面的BEGIN 标签,所谓做事有头有尾,编程结构也是一样的。
  
  
  至于指令的意思,程序中什么是数据段、代码区、堆栈区,你学编程的,就自己体会了,自己复习,指令的作用社么的,看看书吧。
  不负责对汇编代码中某些地方纠错--- -.-

回答(2):

我想没人愿意对这样的代码详细注释。

代码过于简单,即便如此,仍有多处书写错误和逻辑错误!