请问汇编程序, 解释程序, 编译程序分别指

请问汇编程序, 解释程序, 编译程序分别指,第1张

1、汇编程序

把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。

采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。

2、解释程序

解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。

3、编译程序

编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。

它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

扩展资料:

工作过程

1、汇编程序

输入汇编语言源程序。检查语法的正确性,如果正确,则将源程序翻译成等价的二进制或浮动二进制的机器语言程序,并根据用户的需要输出源程序和目标程序的对照清单;如果语法有错,则输出错误信息,指明错误的部位、类型和编号。最后,对已汇编出的目标程序进行善后处理。

2、解释程序

由总控程序完成初始化工作。依次从源程序中取出一条语句进行语法检查,如有错,输出错误信息;如果通过了语法检查,则根据语句翻泽成相应的指令并执行它。检查源程序是否已经全部解释执行完毕,如果未完成则继续解释并执行下一条语句,直到全部语句都处理完毕。

3、编译程序

先进行词法分析与语法分析,然后生成中间代码,接着对程序进行多种等价变换来代码优化,最后生成目标代码。

参考资料来源:百度百科—汇编程序

参考资料来源:百度百科—解释程序

参考资料来源:百度百科—编译程序

汇编语言源程序运行方法:

1、找到一段起始地址为SA:0000(即起始地址的偏移地址为0)的容量足够的空闲内存区。

2、在这段内存区的前256个字节中,创建一个称为程序段前缀(PSP)的数据区,DOS利用PSP来和被加载程序进行通信。

3、从这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0;空闲内存区从SA:0开始,0~255字节为PSP,从256字节处开始存放程序,为更好地区分PSP和程序,DOS将划分到不同的段中,如下这样的地址安排:空闲内存区:SA:0PSP区:SA:0程序区:SA+10H:0注意:PSP区和程序区虽然物理地址连续,却有不同的段地址。

4、将该内存区的段地址(SA)存入DS中,初始化其它相关寄存器后,设置CS:IP指向程序的入口(SA+10H:0)。

DATA SEGMENT

SUM DW

DATA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE , DS:DATA , SS:STACK

START :

MOV AX , DATA A

MOV DS , AX

MOV AX , 0

MOV CX , 100

LOP1 :

ADD AX , CX

LOOP LOP1

MOV SUM , AX

MOV AH , 4CH

INT 21H

CODE ENDS

END START

汇编语言程序设计步骤:

1、分析问题,抽象出描述问题的数据模型

2、确定问题的算法思想

3、画出流程图或结构图

4、分配存储器和工作单元(寄存器)

5、逐条编写程序

6、静态检查,上机调试例:编程查找考生的最高分,假设所有考生分数已存入计算机内存

1、分析问题根据条件、特点、规律→数学模型本例分数已给定为0~200之间的整数集合(考虑加试分),记为{S},找max{S}(注:简单问题不一定写数学模型)

2、确定算法思想最好利用现成算法和程序设计方法,若无,则需根据实践经验总结算法思想

如本例,从成绩单第一分数往下看,边看边比较,记住较高分,舍弃较低分,直至看完,最高分存于脑中

归纳算法思想:建立数据指针并指向数据区首地址

将第一数取入寄存器(如AL),与下一数比较,若下一数大则将其取入寄存器,否则调整指针,再与下一数比较,重复上述过程,直至比较完毕,寄存器中即最高分

读分数用MOV指令,比较用CMP指令,分析判断用条件转移指令

3、画流程图或结构图有逻辑流程、算法流程、程序流程等,复杂问题需画模块结构

本例简单,只画出程序流程图(用模块化结构的N-S流程图表示):本例的N-S流程图图中初始化包括:设一个计数器,将分数个数减一后送计数器,每比较一次减一,至零查找结束;建立一个指针指向数据区

开始初始化取第一数到寄存器与下一数比较下一数大?是否取大数到寄存器修改指针,计数次数减一返回到循环体开始,直到计数次数为0退出循环结束

4、分配存储器空间和工作单元(寄存器)定义数据段、堆栈段、代码段等

工作单元一般用寄存器

本例:分数放数据段,建100字节堆栈空间,BX作数据指针,CX作计数器,AL放最高分

5、逐条编写程序DATASEGMENTFENDB85,90,60,75,87,35,80,78,96,82;存分数MAXDB;存最高分DATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP();100字节堆栈STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDSMOVAX,0PUSHAX;为了返回DOSMOVAX,DATAMOVDS,AX;置数据段寄存器MOVBX,OFFSETFEN;置数据指针MOVCX,MAX-FEN;置计数器初值DECCX;N个分数比较N-1次MOVAL,[BX];取第一个分数LOP:INCBX;调整指针CMPAL,[BX];与下一数比较JAENEXT;大于等于则转MOVAL,[BX];否则取下一数NEXT:LOOPLOP;计数器减一,;不为零转LOPMOVMAX,AL;存放最高分RET;返回DOSSTARTENDPCODEENDSENDSTART6、静态检查,上机调试选用指令尽量字节少,使其执行速度快

易错处应重点查,如比较次数、转移条件等

确信无错后方可上机调试

我去,你怎么把题目改了!!刚把程序从db改成dw,你又改回db

db类型的你参考我以前回答别人一个题目吧。

1计算U=(X+(YZ-100))/W

其中:X,Y,Z,W均为十六位有符号数。

程序如下:

DATA

SEGMENT

X

DW

10

;16位变量

Y

DW

20

Z

DW

30

W

DW

40

U

DW

,

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA

START:

MOV

AX,DATA

MOV

DS,AX

MOV

AX,Y

IMUL

Z

;计算YZ,内容放在DX,AX中

MOV

CX,AX

MOV

BX,DX

SUB

CX,100

;计算YZ-100

SBB

BX,

0

MOV

AX,X

CWD

;将X符号扩展,形成DX:AX中的双字

ADD

AX,CX

;计算X+(YZ-100),内容放在DX,AX中

ADC

DX,BX

IDIV

W

;计算(X+(YZ-100))/W

MOV

U,AX

MOV

U+2,DX

MOV

AH,4CH

INT

21H

CODE

ENDS

END

START

只显示结果,加数、被加数的显示你自己琢磨吧 !

 

 

        CODE  SEGMENT

              ASSUME    CS:CODE

 

           X  DB        12H,34H,56H

           Y  DB        65H,98H,98H

           N  EQU       $-Y

           Z  DB        N+1 DUP(0)

 

      START:  PUSH      CS

              POP       DS

              PUSH      CS

              POP       ES          ; 使数据段、附加段与代码在同一段中

              MOV       CX,N        ; 字节数置入cx

              MOV       BX,0        ; 基址寄存器置0

              CLC                   ; 清进位借位标志

         @0:

              MOV       AL,X[BX]    ; 将被加数的低字节移入al

              ADC       AL,Y[BX]    ; 带进未的加,加加数的低字节

              DAA

              MOV       Z[BX],AL    ; 将结果移入和的低字节

              INC       BX          ; 基址寄存器加1

              LOOP      @0          ; 循环

              

              MOV       BYTE PTR Z[BX],0        ; 处理最高位

              JNC       @01

              MOV       BYTE PTR Z[BX], 1

        @01:

              LEA       SI,Z        ; 将和的首地址置入 si

              MOV       CX,N+1      ; 字节数置入 cx

              CLD

         @1:

              LODSB                 ; 装入和的低字节到 al

              CALL      DSPAL       ; 调用子程序以16进制形式显示(其实是显示bcd数)

              LOOP      @1          ; 循环

 

              MOV       AH,4CH

              INT       21H

 

;=============================

       DSPAL  PROC      NEAR

              PUSH      AX

              PUSH      BX

              PUSH      CX

              PUSH      DX

              PUSHF

              MOV       CX,2        ; 一个字节只有2位的16进制数

              MOV       BX,AX       ; 将al 保存到 bl 中

    @DSPAL1:

              ROR       BL,1        ; 循环将bl 右移4次 ,即将高位移到右侧

              ROR       BL,1

              ROR       BL,1

              ROR       BL,1

              MOV       DL,BL       ; 放到 dl 中

              AND       DL,0FH      ; 清掉 高位

              CMP       DL,9        ; 和9比较

              JA        @DSPAL2     ; 大于 即在 A~F 之间

              ADD       DL,30H      ; 否则就是 0~9,加30H变为 ASCii码

              JMP       @DSPAL3

    @DSPAL2:

              ADD       DL,37H      ; 加 37H 变为 A~F 的ASCii码

    @DSPAL3:

              MOV       AH,2

              INT       21H

              LOOP      @DSPAL1     ; 循环输出 低位

              MOV       AH,2

              MOV       DL,'H'      ; 显示 H

              INT       21H

              MOV       DL,32       ; 显示空格

              INT       21H

              POPF

              POP       DX

              POP       CX

              POP       BX

              POP       AX

              RET

       DSPAL  ENDP

 

        CODE  ENDS

              END       START

词法分析:

词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。

源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。

词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。

语法分析:

编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。

语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。

中间代码:

中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。

以上就是关于请问汇编程序, 解释程序, 编译程序分别指全部的内容,包括:请问汇编程序, 解释程序, 编译程序分别指、汇编语言怎么实现多次手动运行程序、使用汇编语言编写程序从1加到100等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10161808.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存