汇编语言 第七章 子程序设计范文文档格式.docx

上传人:b****2 文档编号:5191333 上传时间:2023-05-04 格式:DOCX 页数:83 大小:32.31KB
下载 相关 举报
汇编语言 第七章 子程序设计范文文档格式.docx_第1页
第1页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第2页
第2页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第3页
第3页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第4页
第4页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第5页
第5页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第6页
第6页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第7页
第7页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第8页
第8页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第9页
第9页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第10页
第10页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第11页
第11页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第12页
第12页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第13页
第13页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第14页
第14页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第15页
第15页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第16页
第16页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第17页
第17页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第18页
第18页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第19页
第19页 / 共83页
汇编语言 第七章 子程序设计范文文档格式.docx_第20页
第20页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言 第七章 子程序设计范文文档格式.docx

《汇编语言 第七章 子程序设计范文文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言 第七章 子程序设计范文文档格式.docx(83页珍藏版)》请在冰点文库上搜索。

汇编语言 第七章 子程序设计范文文档格式.docx

A.主程序调用子程序1

B.主程序调用子程序2

C.主程序调用子程序3

D.子程序1调用子程序2

10.下列叙述中属于子程序直接递归调用的是()。

A.子程序1调用子程序2

B.子程序2调用子程序3

C.子程序3调用子程序4

D.子程序4调用子程序4

11.在进行DOS功能调用前,其功能号应先送()。

A.AH寄存器B.BH寄存器C.CH寄存器D.DH寄存器

12.执行“INT10H”指令时,中断向量地址是()。

A.10HB.20HC.30HD.40H

13.执行“INT10H”指令时,其中断处理程序的入口地址存放在()。

A.10H~13HB.20H~23HC.30H~33HD.40H~43H

14.执行“INT10H”指令时,压入堆栈的内容有()。

A.PSW、CS、IPB.CS、IPC.PSW、IPD.PSW、CS

15.在进行字符串显示的DOS功能调用时,要求字符串的最后一个字符是()。

A.0B.‘0’C.‘$’D.0DH

7.4.2多项选择题

1.一般的子程序说明文件有()。

A.子程序名B.功能描述C.入口参数D.出口参数

2.在子程序的设计中,通常采用现场保护和现场恢复的方法有()。

A.寄存器法B.堆栈法C.约定单元法D.变元法

3.子程序的参数传递方法有()。

A.寄存器法B.约定单元法C.堆栈法D.变元法

4.下列叙述中属于子程序嵌套的有()。

A.子程序1调用子程序2,子程序2调用子程序3。

B.主程序调用子程序2。

C.主程序调用子程序3。

D.子程序3调用子程序4。

5.下列叙述中属于子程序递归调用的有()。

B.子程序2调用子程序3,子程序3调用子程序2。

C.子程序3调用子程序4,子程序4调用子程序3。

D.子程序3调用子程序3。

6.在执行“CALLFARPTRM”指令后,完成的操作有()。

A.CS、IP入栈B.SP+2C.SP+4D.目的地址送CS、IP

7.下列叙述正确的有()。

A.如果主程序和子程序A在同一代码段,则用“CALLA”可以实现子程序的调用。

B.如果主程序和子程序A不在同一代码段,则用“CALLA”可实现子程序的调用。

C.如果主程序和子程序A在同一代码段,则用“CALLFARPTRA”可以实现子程序的调用。

D.如果主程序和子程序A不在同一代码段,则用“CALLFARPTRA”可以实现子程序的调用。

8.下列叙述不正确的有()。

A.在子程序设计中,不论采用什么参数传递方法,须将所有寄存器的内容保护起来。

B.在子程序设计中,为了防止寄存器内容被破坏,通常将有关寄存器内容保护起来。

C.在子程序设计中,都是采用寄存器法传递参数。

D.在子程序设计中,子程序都只安排一个出口。

9.在进行字符串输入的DOS功能调用时,输入字符串缓冲区中的内容是()。

A.第一单元存放字符个数。

B.第二单元存放的是实际输入字符的个数。

C.第三单元开始存放输入字符的ASCII码。

D.最后一个单元存放回车符。

10.如果要将BUF字符缓冲区的内容显示输出,在采用DOS功能调用前,必须()。

A.将BUF字符缓冲区的段地址送DS。

B.将BUF字符缓冲区的段地址送ES。

C.将BUF字符缓冲区的偏移地址送DX。

D.将功能号9送AH寄存器。

7.4.3填空题

1.调用子程序通常用指令,返回调用程序通常用指令。

2.在子程序的设计中,通常用堆栈来保护现场和恢复现场。

而堆栈的操作原则是。

3.如果主程序和子程序在同一个代码段,则主程序调用子程序时只改变地址。

如果主程序和子程序不在同一个代码段,则主程序调用子程序时要改变地址。

4.在调用程序中调用子程序的CALL指令执行后,压人堆栈的内容是指令的下一条指令的地址。

在子程序中的RET指令将返回指令继续执行程序。

5.子程序(过程)的定义是以“过程名”开始,以“过程名”结束。

6.在调用子程序前,如果将要参加运算的数送寄存器,这种参数传递方法称为;

如果将要参加运算的数送指定的内存单元,这种参数传递方法称为;

如果将要参加运算的数压入堆栈,这种参数传递方法称为。

7.一个子程序调用另一个子程序称为;

一个子程序直接或间接调用该子程序本身称为。

8.以过程定义的子程序有两种类型的属性,他们分别是和。

9.在程序设计中,利用堆栈不仅可以保存,而且还可以保存主程序和子程序之间传递的参数,这些参数既可以是,也可以是。

10.在程序的执行过程中,近程调用时CALL指令执行完后压入堆栈的内容是字节,远程调用时CALL指令执行完后压入堆栈的内容是字节。

11.在编制子程序时,的使用是十分频繁的,它不仅可以用来保存返回的地址,而且还可以用来存放主程序与子程序之间传递的。

12.子程序的正确执行是由主程序中的指令和子程序的指令来完成的。

13.在进行“INT45H”功能调用时,其中断类型号为,调用的功能号应送。

14.DOS系统功能调用是根据中断类型号从中断向量表中取中断处理程序的入口地址。

每一个中断处理程序的入口地址占用内存字节,其中的低地址字用来存放中断处理程序的,高地址字用来存放中断处理程序的。

15.中断向量表占用内存字节,它的物理地址范围是。

16.在DOS系统功能调用中,01号功能调用表示,它的出口参数在中。

02号功能调用表示,它的入口参数在中。

17.在DOS系统功能调用中,要实现字符串显示输出应使用号功能调用,要实现字符串输入应使用号功能调用。

18.在进行字符串输入的DOS系统功能时,如果键盘输入字符“345A”后按回车键,则在键盘输入缓冲区的第二单元的值是,在第三到第七单元的值依次是。

19.在进行字符串显示输出的DOS系统功能时,要求输出字符串以结尾。

20.在进行DOS功能调用时,压入堆栈的内容是。

7.4.4简答题

1.简述在程序设计中,采用子程序结构有哪些优点?

2.简述过程的定义与子程序的定义有何区别?

3.简述一个完整的子程序结构应包含哪几方面的内容?

4.在子程序的设计过程中,子程序的现场保护和现场恢复通常采用哪几种方法?

哪一种方法使用较为方便?

5.调用程序和子程序之间一般使用哪几种参数的传递方法?

他们各自的特点是什么?

6.简述段内调用和段间调用时堆栈有何不同?

7.简述子程序嵌套调用的基本原理。

8.简述递归调用的基本原理。

9.简述DOS系统功能调用的使用方法。

10.简述DOS系统功能调用和中断返回时堆栈的变化?

7.4.5程序分析题

1.现有程序如下:

STACKSEGMENTSTACK‘STACK’

DW100DUP(0)

STACKENDS

DATASEGMENT

BUFDB100DUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

LEADI,BUF

L:

MOVAH,1

INT21H

CMPAL,0DH

JZEXIT

CALLSTO

JMPL

EXIT:

MOVBYTEPTR[DI],‘$’

LEADX,BUF

MOVAH,9

INT21H

MOVAH,4CH

STOPROC

CMPAL,30H

JBNEXT

CMPAL,39H

JANEXT

MOV[DI],AL

INCDI

NEXT:

RET

STOENDP

CODEENDS

ENDSTART

请回答:

(1)STO子程序完成的功能是什么?

(2)该程序完成的功能是什么?

2.现有程序如下:

BUF1DB100DUP(?

BUF2DB200,0,200DUP(0)

EQDB‘两个字符串相等!

$’

NEQDB‘两个字符串不相等!

FLAGDB0

MOVEX,AX

LEADX,BUF2

MOVAH,0AH

MOVCX,100

LEASI,BUF1

LEADI,BUF2+2

CALLSCMP

CMPFLAG,0

JZN

LEADX,EQ

MOVAH,9

JMPEXIT

N:

LEADX,NEQ

SCMPPROC

PUSHAX

MOVAH,[DI-1]

MOVAL,9

MOVAH,0

CMPAX,CX

JZR

CLD

CMPSB

JNZR

MOVFLAG,0FFH

JMPR1

R:

MOVFLAG,0

R1:

POPAX

RET

SCMPENDP

(1)SCMP子程序完成的功能是什么?

3.现有程序如下:

BUFDB20

CDB4

MOVBL,C

MOVSI,BUF

L1:

PUSHSI

CALLSUBP1

CALLSUBP2

POPSI

INCSI

DECBL

JNZL1

SUBP1PROC

PUSHDX

L2:

MOVDL,20H

MOVAH,2

DECSI

JNZL2

POPDX

POPAX

SUBP1ENDP

SUBP2PROC

PUSHAX

PUSHDX

MOVCX,8

L3:

MOVDL,‘*’

LOOPL3

MOVDL,0DH

MOVDL,0AH

SUBP2ENDP

(1)SUBP1子程序完成的功能是什么?

(2)SUBP2子程序完成的功能是什么?

(3)该程序完成的功能是什么?

4.现有程序如下:

ADB30

BDB9

CDW5

MOVCX,C

MOVBH,B

MOVBL,A

PUSHBX

POPBX

INCBL

SUBBH,2

LOOPL1

DECBH

JNZL3

5.现有程序如下:

STACKSEGMENTSTACK‘STACK’

DW100DUP(0)

STACKENDS

BUF1DB0E5H,01H,73H,34H,3AH,0D5H

C1=$-BUF1

BUF2DB22H,12H,67H,35H,73H,0B3H

C2DB$-BUF2

DATAENDS

CODESEGMENT

ASSUMECS:

START:

MOVDS,AX

MOVAX,STACK

MOVSS,AX

LEABX,BUF1

MOVCX,C1

CALLSORT

LEABX,BUF2

MOVCX,C2

SORTPROC

PUSHSI

PUSHDI

MOVDX,CX

DECDX

MOVSI,1

L1:

MOVDI,SI

MOVAL,[BX+SI-1]

CMPAL,[BX+DI-1]

JBENEXT

XCHG[BX+DI-1],AL

MOV[BX+SI-1],AL

NEXT:

INCDI

CMPDI,CX

JBEL2

CMPSI,DX

JBEL1

POPDI

SORTENDP

CODEENDS

ENDSTART

(1)该子程序完成的功能是什么?

(2)程序执行完后,BUF1和BUF2的内容各是什么?

6.现有程序如下:

BUFDW20E5H,4501H,7653H,1234H,354AH,60D5H

C=($-BUF)/2

SMAXDW0

LEAAX,BUF

MOVAX,C

CALLMAX

MOVAH,4CH

MAXPROC

PUSHBP

MOVBP,SP

PUSHBX

PUSHCX

PUSHF

MOVSI,[BP+6]

MOVCX,[BP+4]

MOVBX,[SI]

DECCX

ADDSI,2

MAX1:

LODSW

CMPAX,BX

JNANEXT

XCHGAX,BX

LOOPMAX1

MOVSMAX,BX

POPF

POPCX

POPBP

RET4

MAXENDP

(2)程序执行完后,SMAX中的内容为何值?

7.现有程序如下:

STACKSEGMENTSTACK

DB100DUP(0)

DATASEGMENT

BUFDW1064H

N=($-BUF)/2

STRDB9DUP(‘’)

LEASI,BUF

MOVCX,N

MOVAX,[SI]

LEADI,STR

CALLCBD

LOOPL

CBDPROC

PUSHCX

PUSHDI

ORAX,AX

JNSPLUS

MOVBYTEPTR[DI],‘-’

NEGAX

PLUS:

MOVCX,5

MOVBX,10

MOVDX,0

DIVBX

ADDDL,30H

MOV[DI],DL

JZL2

LOOPL1

MOVBYTEPTR[DI],0DH

MOVBYTEPTR[DI],0AH

MOVBYTEPTR[DI],‘$’

POPDX

POPDI

POPCX

POPBX

CBDENDP

(2)程序执行完后,显示输出的结果是什么?

8.现有程序如下:

NUM1DQABCDEFH

NUM2DQ0FEDCBAH

RESULDT0

MOVES,AX

LEASI,NUM1

LEABX,NUM2

LEADI,RESUL

CALLAD

ADPROC

CLC

MOVCX,4

AGAIN:

LODSW

ADCAX,[BX]

STOSW

ADDBX,2

LOOPAGAIN

MOVAX,0

ADCAX,0

MOV[DI],AX

ADENDP

(2)程序执行完后,RESUL单元的内容是什么?

9.现有程序如下:

STRDB‘PLEASEINPUTSTRING(0…9):

ASCDB20,0,20DUP(0)

BCDBDB20DUP(0)

LEADX,STR

LEA

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2