语言试题及参考答案

时间:2022-11-29 00:07:58 期末试题 我要投稿
  • 相关推荐

汇编语言试题及参考答案

  在现实的学习、工作中,只要有考核要求,就会有试题,试题可以帮助学校或各主办方考察参试者某一方面的知识才能。还在为找参考试题而苦恼吗?以下是小编为大家收集的语言试题及参考答案,供大家参考借鉴,希望可以帮助到有需要的朋友。

汇编语言试题及参考答案

  语言试题及参考答案

  一部分

  (每小题1分,共20分)

  1.指令JMP FAR PTR DONE属于( D )

  A.段内转移直接寻址 B.段内转移间接寻址

  C.段间转移直接寻址 D.段间转移间接寻址

  2.下列叙述正确的是( C )

  A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP

  S指令

  B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM

  P指令

  C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J

  NL指令

  D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J

  NB指令

  3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这

  个数据区最末一个字单元的物理地址是( )

  A.12CSBH B.12B6BH C.12C59H D.12BFEH

  4.在下列指令的表示中,不正确的是( C )

  A.MOV AL,[BX+SI] B.JMP SHORT DONI

  C.DEC [BX] D.MUL CL

  5.在进行二重循环程序设计时,下列描述正确的是( A )

  A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内

  B.外循环初值应置外循环之内;内循环初值应置内循环之内

  C.内、外循环初值都应置外循环之外

  D.内、外循环初值都应置内循环之外,外循环之内

  6.条件转移指令JNE的测试条件为( A )

  A.ZF=0 B.CF=0 C.ZF=1 D.CF=1

  7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( D )

  A.BX或CX B.CX或SI C.DX或SI

  D.SI或DI

  8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在

  ( A )中。

  A.数据段中偏移量为3236H的字节

  B.附加段中偏移量为3234H的字节

  C.数据段中偏移量为3234H的字节

  D.附加段中偏移量为3236H的字节

  9.执行如下程序:( )

  MOV AX,0

  MOV AX,0

  MOV BX,1

  MOV CX,100

  A:ADD AX,BX

  INC BX

  LOOP A

  HLT

  执行后(BX)=( C )

  A.99 B.100 C.101 D.102

  10.上题的程序执行后(AX)=( B )

  A.5000 B.5050 C.5100 D.5150

  11.对于下列程序段:( )

  AGAIN:MOV AL,[SI]

  MOV ES:[DI],AL

  INC SI

  INC DI

  LOOP AGAIN 也可用______指令完成同样的功能。

  A.REP MOVSB B.REP LODSB C.REP STOSB D.REPE SCASB

  12.下面指令序列执行后完成的运算,正确的算术表达式应是( )

  MOV AL,BYTE PTR X

  SHL AL,1

  DEC AL

  MOV BYTE PTR Y,AL

  A.y=x2+1 B.x=y2+1 C.x=y2-1 D.y=x2-1

  13.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。

  ( B )

  A.占内存空间小,但速度慢 B.占内存空间大,但速度快

  C.占内存空间相同,速度快 D.占内存空间相同,速度慢

  14.在程序执行过程中,IP寄存器中始终保存的是( )

  A.上一条指令的首地址 B.下一条指令的首地址

  C.正在执行指令的首地址 D.需计算有效地址后才能确定地址

  15.PSW寄存器中共有______位条件状态位,有______位控制状态位。( )

  A.6、3 B.3、6 C.8、4 D.4、8

  16.下列指令执行时出错的是( A )

  A.ADD BUF1,BUF2

  B.JMP DWORD PTR DAT [BX]

  C.MOV AX,[BX+DI] NUM

  D.TEST AL,08H

  17.已知(AX)=1234H,执行下述三条指令后,(AX)=( D ) MOV BX,AX

  NEG BX

  ADD AX,BX

  A.1234H B.0EDCCH C.6DCCH D.0000H

  18.在下列指令中,______指令的执行会影响条件码中的CF位。( )

  A.JMP NEXT B.JC NEXT C.INC BX

  D.SHL AX,1

  19.串指令中的目的操作数地址是由______提供。( C )

  A.SS:[BP] B.DS:[SI] C.ES:[DI]

  D.CS:[IP]

  20.将DX的内容除以2,正确的指令是( )

  A.DIV 2 B.DIV DX,2 C.SAR DX,1

  D.SHL DX,1

  二部分

  (每小题4分,共12分)

  1.假定(DX)=10111001B,(CL)=0.3,(CF)=1,试确定下列各条指令单独执行后, DX中的值。

  (1)SHR DX,1

  (2)RCR DL,1

  (3)RCL DX,CL ?????

  2.写出完成下述功能的程序段:

  (1)传送25H到AL寄存器

  (2)将AL的内容乘以2

  (3)传送15H到BL寄存器

  (4)AL的内容乘以BL的内容

  并请写出最后(AX)=?

  3.写一程序段,求双字长数DX∶bX的相反数。

  NEG DX

  NEG AX

  SBB DX, 0

  三部分

  (每小题6分,共36分)

  1.现有如下程序段:

  DATA SEGMENT DA3 EQU 1234H

  ORG 0020H DA4 EQU $-DA2

  DA1 DW 12H,23H DA5 DB 31H,32H

  DA2 DB 11H,21H DATA ENDS

  请回答:(1)该程序段已占有的存储字节数是多少?

  2.执行下列程序段后,回答问题。

  ORG 1221H MOV BX,OFFSET NUM

  NUM DW 12H MOV CL,BYTE PTR NUM+1

  … MOV CH,TYPE NUM

  MOV AX,NUM HLT

  请问:(AX)=__0012H____,(BX)=_1221H_____,(CX)=__0200H____。

  3.阅读如下程序:

  ADRR DB XXH,XXH,……,XXH CMP ADRR[BX],0

  NUM EQU $ -ADRR LOOPZ DON

  RETT DB? JNZ NEXT

  … MOV BL,OFFH

  MOV CX,NUM NEXT:MOV RETT,BL

  MOV BX,-1 HLT

  DON:INC BX

  请问:(1)该程序完成的功能是什么?

  (2)程序执行后指出RETT字节单元中的内容是什么?

  4.现有一子程序:

  SUB1 PROC

  PLUS:TEST BL,80H

  TEST AL,80H

  JE EXITO

  JE PLUS

  XCHANGE:XCHG AL,BL

  TEST BL,80H

  EXITO:RET

  JNE EXITO

  SUB1 ENDP

  JMP XCHANGE

  试回答:(1)子程序的功能是什么?

  (2)若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=___

  BL=______。

  5.阅读程序段:

  BLOCK DB 20H,1FH,08H,81H,OFFH… LOP1:CMP AL,[SI+1]

  RESULT DB? JNG NEXT

  … MOV AL,[SI+1]

  START:LEA SI,BLOCK NEXT:INC SI

  MOV CX,[SI] LOOP LOP1

  INC SI MOV RESULT,AL

  MOV AL,[SI] HLT

  请问:(1)该程序完成的功能是什么?

  (2)该程序循环的次数是多少?

  6.阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。 ORG 100H

  BLOK DW X1,X2,…,XN

  COUNT EQU($-BLOLOK)/2

  RESULT DW COUNT,?

  LEA BX,BLOK-2

  MOV CX,RESULT

  XOR AX,AX

  GOON:ADD BX,2

  CMP AX,[BX]

  JAE NEXT

  MOV AX,[BX]

  NEXT:LOOP GOON

  MOV RESULT+2,AX

  程序段执行完,回答下述问题

  RESULT+2字存储单元的内容=______

  BX=______

  程序循环次数=______

  四部分

  一、1-10CCCCAADACB 11-20.ADBBAADDCC

  二,简答题(每小题4分,共12分)

  1.答:(1) 005CH (2) 00DCH (3) 05CCH

  2. 答:(1)MOV AL, 25H

  (2)SHL AL, 1

  (3)MOV BL, 15H

  (4)MUL BL

  最后,(AX)=612H =1554

  3.答:NEG DX

  NEG AX

  SBB DX, 0

  三,程序分析题(每小题6分,共36分)

  1. 答:(1) 该程序段已占有的存储字节数是8个字节

  (2) 符号名DA4的值为2,符号名DA5的值是0026H。

  2. 答:(AX)=0012H (BX)=1221H (CX)=0200H

  3.答:(1) 在以ADRR为起始地址的数组中,查找第一个非0数据。

  (2) 若找到则将第一个非0数据在数组中的偏移量送入RETT单元 中;若无非0数据,则将OFFH送入RETT单元中。

  4.答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号 时交换,否则不变。

  (2) AL=77H, BL=9AH

  5. 答:(1) 该程序完成的功能是从20H(32)个有符号数中找出最小的数 送入RESUL T单元中。

  (2) 该程序的循环次数是1FH(31)。

  6.答:RESULT+2字存储单元的内容是MAX(X1, X2, … XN) BX= 100H + 2×(COUNT-1)

  程序循环次数= COUNT

  看过“汇编语言试题”的人还看了:

  1.大学《汇编语言》试题及答案

  2.程序设计试题及答案

  汇编语言课程设计报告

  一、预备知识

  汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

  二、实验目的

  1、 掌握实验运行汇编语言所用的计算机机型

  2、 熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。)

  3、 掌握汇编程序ASM、宏汇编程序MASM1.0以上。

  4、 LINK连接程序

  5、 DEBUG调试程序

  三、汇编语言源程序上机操作过程

  编辑源文件

  根据给定的任务,可编写程序。如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。

  将包含QE文件的工作磁盘插入驱动器A:。进入QEA>QE进入全屏幕后可以开始编程。文件名取为Myprog。asm;Ddisplystring (09H)

  CODESEGMENTPUBLIC

  ASSUME CS:CODE,DS:CODE

  ORG 100H

  START:JMP BEGIN

  MSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display message

  MOV DS,AX

  MOV DX,OFFSET,SG ;set up to display message

  MOV AH,09H;display string function request

  INT 21H ;call DOS

  MOV AH ,4CH ;terminate propram funct request

  INT 21H ;Call DOS

  CODE ENDS;end of code segment

  END START;strat is the entry point

  输入完毕后,按ALT---X,存盘返回DOS

  3、 汇编源程序文件(ASM,MASM)

  由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。需要经过汇编程序的汇编,使其转为目标代码文件。它是通过调用宏汇编MASM(或汇编程序ASM)程序完成这一汇编操作的。汇编程序还将对源文件进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无错时为止,此时得到的是一个目标文件(OBJ文件)。

  A>masm

  Source filename [.ASM]:myfile

  Object filename [myfile.OBJ]:

  Source Listing [Nul.LIST]:

  Cross—referedce [NUL.CRF]:

  4、 连接目标文件(LINK)

  目标文件为浮动的相对地址,是不可直接执行的。必须经过连接,把有关模块连接在一起,构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由LINK连接程序实现的,止时得到的是一个可可执行文件(EXE文件)。

  A>LINK

  Object Modules [.OBJ]myfile

  Run File[MYFILE.EXE]:

  LIST FILE [NUL.MAP]:

  Libraries[.LIB]:

  5、 运行可执行文件

  得到可执行文件后就可以直接调用可执行文件名,从盘上调到内存中运行。

  四、实验总结

  编写好一个程序后,要想在计算机中调试、运行,必须要有一个程序来支持程序的编辑、修改等操作。这种支援程序叫编辑程序。编辑程序有很多种,但按功能划分,主要有两大类。一类是行编辑程序,如EDIT编辑程序;另一类是全屏幕编辑程序如Quick Edit(QE)。行编辑程序功能较弱,不如全屏幕编辑程序方便、灵活。在编辑汇编语言的源程序时,可以使用已熟悉的。

  基于汇编语言的BCH解码校验算法

  摘要:介绍数据传输中BCH解码校验用汇编语言实现的算法。算法包含BCH码的差错检验、差错位查找和差错纠正,同时列出相关主要子程序清单并予说明。

  关键词:BCH解码校验算法汇编语言

  数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输差错。通信中校验的方法很多,其中的BCH编码有其独特的优点:不仅可以检纠突发差错,还能检纠随机差错,被广泛地采用在微机级的通信中。但对更低层的单片机级的数据传输通信纠错,往往采用奇偶校验等简单的校验方法。BCH校验因其算法复杂,尤其是动态实时的无线通信中,单片机的通信往往无法采用BCH解码检纠。

  笔者近几年在工业测控和无线通信系统开发,摸索了BCH解码检纠在实时的、动态的、单片机级的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)码为例进行探讨。

  1、BCH码结构

  BCH码是一种检纠能力较强的循环码。它由信息多项式M(X)和校验多项式J(X)组成,如以T(X)表示整个BCH(31:21)码字的31位码组多项式,则:

  T(X)=M(X)+J(X)(1)

  在31位BCH码的后面再加上1位,以保证整个码字32位中“1”的个数为偶数。该位称偶校验位。这样就形成BCH(31:21)加1位偶校验位的标准码字,其结构为:

  其中校验多项式J(X)由公式(2)计算:

  X0X1……X20X21……X30X31T(X)J(X)偶校验位

  J(X)=M(X)/S(X)(2)

  式中S(X)是BCH(31:21)码的生成多项式,见式(3):

  生成多项式S(X)的值在BCH(31:21)码的值是固定的。

  BCH码是一种循环码,循环码是利用除法来纠错的。由于任一码组多项式T(X)都能被生成多项式S(X)整除,所以在接收端可以将接收码组R(X)用S(X)去除。若在传输中未发生错误,接收码与发送码相同,即R(X)=T(X),故接收码组R(X)必定能被生成多项式S(X)整除;若码组在传输中发生错误,即R(X)≠T(X),R(X)被S(X)除时,可能除不尽而有余项Y(X),因此,可根据余项是否为零来判断码中有无错误(检错),如有余项,通过一定的运算就可以确定错误位置,从而加以纠正(纠错)。

  这里R(X)被S(X)除,是32位被11除,这在非实时静态的微机级实现非常简单;但在实时的、动态的、单片机级的通信中实现要快速巧妙的算法才能实现,否则,现有的码未检错及纠错完毕,下一个码已经到了。因为动态中位和位的时距t往往只有几十μs,以9.6b/s的短信为例,t=104μs。在这104μs中要完成检错、定位和纠错三个算法程序,才是一个完整的解码检纠过程。

  2、检错

  根据上述原理,检错过程也就是求算R(X)被S(X)除的余项Y(X)的过程,如余项Y(X)=0,则R(X)=T(X),传输无差错;如余项Y(X)≠0,则R(X)≠T(X),检出传输差错。

  在算法语言中,所有的运算总归于二种运算:加和减。这是电子计算机的二进制基本电路特性所决定的,也是汇编语言唯一的算术运算方法。为此,这里把除法用模二加法再加右移位实现。

  已知:S(X)=11101101001

  R(X)=r3r4r5r6(ri为8位寄存器)

  调用下面的模二加法右移子程序,得到R(X)/S(X)的余项Y(X)=r3r4。

  ;32位/16位模二加法右移子程序

  m2add:movr7,#00

  m2ddgx:mova,r3

  xrla,#0edh;S(x)的高位=oed(h)

  movr3a

  mova,r4

  cplacc.5;S(x)的低3位=001(b)

  movr4,a

  mova,r3

  acc7e10:

  jbacc.7m2addgx;R(x)的最高位为“0”,则R(x)右移

  mova,r6

  rlca

  movr6,a

  mova,r5

  rlca

  movr5,a

  mova,r4

  rlca

  movr4,a

  mova,r3

  rlca

  movr3,a

  movr7

  cjner7,#10h,acc7e10;右移总次数为16次

  ret

  余项Y(X)的高8位在r3寄存器中,低3位在r4的高3位。

  3、定位

  如果Y(X)=r3r4≠0,表示接收到的码组R(X)有差错,下一步则由Y(X)的值推算差错在R(X)中的位置。

  理论上要找出R(X)中差错的位置,必须计算出差错校验子C(X)。在实践中,校验子C(X)的计算不仅费时间,而且多位检纠还需多个校验子C(X)。为此,经过几年的实践,把Y(X)(即r3r4)直接作为综合校验子,通过快速查表找到差错位置。查找程序的大小和检纠差错位数有关,这里以检纠4位差错为例,说明定位纠错的方法。

  4位差错位址查找子程序

  bitposi:movb,0;对R(X)高位至低位的移动计数

  movr2,#1fh;设表格长度

  btoa:mova,b

  incb

  acalltabsub;调用表格子程序,读入表格值

  clrc

  subba,r3;Y(X)中的r3和表格值比较

  jnzbinc1:不相等,转出

  mova,b;相等,继续

  acalltabsub

  clr

  subba,r4;Y(X)中的r4和表格值比较

  jnzr2decl:不相等,转出

  setbf0;相等,置标志位返回

  ret

  bincl:incb

  r2decl:djnzr2,btoa

  ret;表格查毕,没有相等的值,不置标志位返回

  从查找子程序返回的B寄存器的值,即为差错在R(X)中从高位到低位的位数值。

  ;4位差错表格子程序

  tabsub:inca

  movca,@a+pc;将相对位置的表格送入a寄存器

  ret

  db0ebh;表格开始,长度为查找子程序中

  db00;r2寄存器的预置值

  db76h

  4、纠错

  找到了差错在R(X)位置,就可以纠错了。

  纠错的原理比较简单,因为单片机处理的是二进制数,而二进制数只有二个状态,即不是“0”就是“1”。也就是说,R(X)中差错位是“0”,则改为“1”;差错位是“1”,则改为“0”。所以纠错要对所在位求反就行了,程序见本刊网络补充版。

  至此,整个检错、定位、纠错的BCH码校验检纠过程结束。BCH码校验算法,经过实践的检验,不失为单片机级的数据传输校验好算法。这种方法可以对多位随机差错和多位突发差错进行检验和纠错,具体位数的多少仅受单片机工作频率的限制,而不受方法的限制。

  汇编语言和C语言在软件工程中的应用论文

  一、汇编语言在软件工程中的应用

  汇编语言是建立在传统机器语言基础之上的,保留了传统语言的优势的同时,突破了传统语言的弊端,能够对关键程序代码进行准确控制,且能够直接访问并控制相应的硬件系统,促使硬件发挥积极作用,从而确保系统稳定运行,不仅如此,汇编语言程序编译后的目标代码空间需求较小,执行效率较高,在系统软件程序和过程控制程序中的应用比较广泛、且普遍,其具有独特的优势,是其他语言难以取代的。但是,事物具有两面性,汇编语言也存在一定不足,由于其基础是机器语言,使得其对象没有发生变化,没有改变其是一种低级语言的地位,且理解难度也较高。在软件开发中应用此语言,效率并不明显,且针对硬件系统而言,且精确度并不高,兼容性较差,即便是类似硬件也不能够通用。在软件工程中,汇编语言凭借自身与硬件系统联系密切,且能够实现直接访问,很多系统软件都采用汇编语言进行编程,还包括一些对处理速度要求较高的程度也是通过汇编语言编写的。不仅如此,在系统核心部分、软件加密、解密及计算机病毒分析等方面也都具有广泛的应用。在一些行业中,汇编语言是不可缺少的,只能够选择它,在熟悉的程序员手中,使用汇编语言能够显著提升效率及性能,但是,其弊端是需要利用更长的时间进行调整和优化。汇编语言在一些工业企业中,制作4位单片机等,以此来实现对工业生产过程的控制和管理,另外,针对需要快速及实时响应的场合,也需要选择汇编语言,例如:仪器仪表及工业控制设备等,一般情况下,汇编语言应用于最底层,驱动程序及嵌入式操作程度等,随着现代软件系统不断发展,汇编语言逐渐成为计算机专业学生必须了解和掌握的一门课程,能够帮助学生认识计算机运行原理,夯实计算机相关知识基础。

  二、C语言在软件工程中的应用

  C语言自上个世纪90年代出现在计算机领域中,C语言作为一种高级语言,不仅具有人性化特点,还包括汇编语言的特性,受到软件工程开发广泛关注,其本质是高级与低级语言有机结合的编程工作单元,通过函数、循环等应用,能够形成结构化设计方法,提高系统层次性、清晰度等方面具有积极作用,且方便用户调试和维护。C语言自身优势很多,运算符丰富,实现多样化表达,满足多元化需求,且数据类型较多,例如:指针型、实型等类型,能够实现相对复杂的数据运算任务,相比较而言,C语言更具有灵活性,兼顾人性化及实用性两方面,能够直接对对位地址和字节地址进行操作,另外,运用C语言编写源程序,不仅系统质量高,而且执行效率也很高为更好地移植和修改奠定了坚实的基础,诚然,C语言也存在一定缺陷,灵活度高,使得其对语法规则要求并不严格,使得变量类型规范也受到一定影响,存在一定安全隐患,初学者刚接触C语言时,难以更好地接受和理解,增加了学习难度。指针作为C语言在软件工程中应用的关注点,针对与硬件联系较多的程序,C语言编写程序更为高效,且多种机型及操作系统也可以选择C语言,帮助人们直接访问地址,及时检查语法错误,纠正错误,既能够提高系统质量,也能够有效提高系统运行效率。未来,C语言将会广泛应用于系统程序编写中。综上所述,汇编语言与C语言自身都存在优势及缺陷,单纯的使用一种语言,难以发挥有效作用,且不利于软件工程开发,至此,可以将二者有机结合,实现优势互补,在程序编写过程中,发挥各自优势,更好地满足用户对系统的需求。

  三、结论

  根据上文所述,软件工程作为一项综合性工程,在促进社会发展等方面占据不可替代的位置,而汇编语言与C语言作为实现软件工程开发的核心,二者均具有自身独特的优势及不足,为了更好地实现程序编写,应将二者结合在一起,取二者之长,提高系统软件可读性、灵活性,进而为用户提供更加优质的服务。

  汇编语言的心得体会

  一、实验目的

  1、学习使用汇编语言、连接程序对汇编语言源程序进行汇编、链接装配操作。

  2、学习使用调试程序debug对可执行文件.exe进行调试运行。

  3、训练分支程序的编制,逐步熟悉二元选择、多元选择等程序描述方法,加深对程序控制类指令的结构和功能的理解。

  4、掌握调试分支程序的基本方法,以了解程序的静态结构和动态执行情况的差异性。

  二、实验设备

  1、硬件:IBM PC及兼容机

  2、软件:

  操作系统Ms dos/Windows 98/Windows2000 /Windows XP

  编辑软件:edit、记事本

  汇编语言程序包:masm5.0以上(包括masm、link)

  三、实验内容

  题目A:设平面上有一点p直角坐标(x,y),试 编制完成下列操作的程序 如点p在第i象限,则K单元←i(1,2,3,4)

  如点p在坐标轴上,则K单元←0

  题目B:编制程序求A、B、C三个有符号数的中间数。(A、B、C为字节单元)

  四、实验步骤

  1、编辑源程序,建立一个以后缀为 .ASM的文件.

  2、汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。

  3、连接目标程序,产生可执行程序。

  4、DEBUG调试可执行程序,记录程序运行结果。

  5、在操作系统状态下,运行程序,并记录程序运行结果。

  五、实验总结

  1、实验中遇到哪些问题?分析主要问题的出错原因及解决方法。

  2、本次实验有何收获和体会。

  3、有何改进意见及建议。

  C语言与汇编语言的混合程序设计技术论文

  摘 要:

  一般在较大的程序设计当中,如果把汇编语言与高级语言程序结合起来使用,把两种语言的优点都发挥出来,充分利用两种的优势,进行混合编程,则可以很多的难以解决的难题。在程序设计的实践当中,C语言和汇编语言可以相互调用,C语言可以调用汇编语言,汇编语言可以调用C语言,也可以把其中一种语言程序嵌入到另一种程序语言当中。本文就是探讨把C语言与汇编语言两种语言进行混合编程,实现两者的最佳组合,从而解决一些实践难题。

  关键词:

  汇编语言;C语言;混合编程

  汇编语言的优势就是速度快,占用存储空间不大,而且可以随时控制硬件,这些优点是其它的程序语言无法取代的。汇编语言也有不足之处,就是在高级程序的编写与调试时存在着较大的困难,特别是在处理一些数据或者一些混合运算时显得更加困难。

  C语言,它的优势就是在于功能全面,表达形式多样且灵活,开发使用效率很高,具有其它高级语言无法具有的优势。通常在软件开发过程中,大部分程序采用高级语言编写,以提高程序的开发效率;但在要求执行速度快、占用空间少或要求直接控制硬件的场合,则利用汇编语言编写,以提高程序的运行效率。

  1.汇编语言和C语言混合编程的方法

  C语言和汇编语言混合编程的具体方法有以下几种。

  2.1 参数传递

  汇编语言程序和C语言程序在调用时会涉及到参数传递,一般采用堆栈进行传递。在汇编语言中将BP作为基址寄存器,调用程序先将来自于C语言程序中的参数依次压入堆栈中,然后当需要使用这些参数时,再用BP加上不同的偏移量依次对堆栈中的数据进行存取操作。

  2.2 调用关系的确定

  对于将要涉及到调用的过程或函数需要事先说明和建立调用与被调用关系。被调用的过程或函数应预先说明为外部类型,以便被外部模块引用,而调用程序也需要在程序中说明将要引用的外部模块的名称。在说明调用关系时还应根据不同的存储模式确定相应的汇编语言格式。C程序小模式对应汇编程序的近类型过程,而C程序大模式则对应汇编程序的远类型过程。

  总而言之,汇编语言和C语言的混合编程方法可以使汇编语言与C语言之间取长补短,充分发挥各自优势,相互交叉调用,进行参数传递,共享数据信息和数据结构,使由此开发的软件更实用、更安全可靠,使开发和编程工作达到事半功倍的效果。

【语言试题及参考答案】相关文章:

面试试题及参考答案12-09

商法模拟试题及参考答案11-23

数字逻辑试题及参考答案11-23

化工制图试题及参考答案11-23

商法期末复习试题及参考答案11-23

商法考试题及参考答案11-23

资产评估模拟试题及参考答案11-23

国际结算模拟试题及参考答案12-01

电工原理模拟试题及参考答案11-23