汇编语言复习.docx

上传人:b****8 文档编号:9857719 上传时间:2023-02-07 格式:DOCX 页数:11 大小:83.80KB
下载 相关 举报
汇编语言复习.docx_第1页
第1页 / 共11页
汇编语言复习.docx_第2页
第2页 / 共11页
汇编语言复习.docx_第3页
第3页 / 共11页
汇编语言复习.docx_第4页
第4页 / 共11页
汇编语言复习.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

汇编语言复习.docx

《汇编语言复习.docx》由会员分享,可在线阅读,更多相关《汇编语言复习.docx(11页珍藏版)》请在冰豆网上搜索。

汇编语言复习.docx

汇编语言复习

汇编语言考试复习范围:

课本的习题:

p112(习题三)7-14

P140(习题四)6-11

相关的习题:

1.以下为用段基址:

偏移量形式表示的内存地址,试计算它们的物理地址。

⑴12F8:

0100⑵1A2F:

0103⑶1A3F:

0003⑷1A3F:

A1FF

2.自12FA:

0000开始的内存单元中存放以下数据(用十六进制形式表示):

030611A31301,试分别写出12FA:

0002的字节型数据、字型数据及双字型数据的值。

3.分别指出下列指令中源操作数和目标操作数的寻址方式。

⑴MOVBX,12

⑵MOVAL,128

⑶MOV[BX],DX

⑷MOVDS,AX

⑸MOVVAR,8

⑹MOV[1000H],DX

⑺MOV6[BX],CX

⑻MOVAX,[BX][SI]

⑼MOVTAB[BP][DI],AL

4.在80X86系统中,设(DS)=1000H,(ES)=2000H,(SS)=1200H,(BX)=0300H,(SI)=0200H,(BP)=0100H,VAR的偏移量为0060H,若目标操作数为存储器操作数,请计算目标操作数的物理地址是多少?

⑴MOVBX,12⑵MOVAL,128

⑶MOV[BX],DX⑷MOVES:

[SI],AX

⑸MOVVAR,8⑹MOV[1000H],DX

⑺MOV6[BX],CX⑻MOV[BX][SI],AX

⑼MOV6[BP][SI],AL

5.写出以下指令的执行结果:

⑴MOVAX,3000H与MOVAX,[3000H]

⑵MOVAX,MEM与MOVAX,OFFSETMEM

⑶MOVAX,MEM与LEAAX,MEM

6.指出下列指令的错误:

⑴MOV[AX],BX⑵MOVAL,1280

⑶MOV[BX],9⑷MOVDS,1000H

⑸MOVVAR,[BX]⑹MOVM1,M2

⑺MOV6,CX⑻MOVAX,[SI][DI]

⑼MOVCS,AX⑽MOVBX,OFFSETVAR[SI]

8.自BUFFER单元开始连续存放着两个字型数据,编程序求它们的和,并把结果存放在这两个数据之后。

9.写出把首址为BUF的字型数组的第4个字送到AX寄存器的指令,要求使用以下几种寻址方式:

⑴直接寻址方式

⑵使用BX的寄存器间接寻址方式

⑶使用BX的寄存器相对寻址方式

10.设(DS)=1000H,(BX)=0300H,(SI)=0002H,(DI)=0100H,自1000:

0300单元开始存有以下数据(用十六进制形式表示):

1234567890ABCDEF,试说明下列各条指令执行后目标操作数的内容。

⑴ADDBX,12⑵MOVDX,[0300H]

⑶SUBBYTEPTR[BX],8⑷MOVAX,[BX][SI]

⑸MOVCX,5[BX]⑹MOVDX,4[BX][SI]为非压缩BCD码,完成第15题所要求的操作。

11.编程序使:

⑴使AL的各位变反。

⑵BX寄存器低四位置1。

⑶AX寄存器的低四位清0。

⑷使CX寄存器的低四位变反。

⑸用TEST指令测试AL寄存器的位0和位6是否同时为0,若是则把0送DH寄存器,否则把1送DH寄存器。

12.下列语句各为变量分配了多少字节?

⑴N1DB5

⑵N2DB123

⑶N3DB‘123’

⑷N4DB80,?

80DUP(0)

⑸N5DW1,2,3

⑹N6DD6,100

⑺N7DDN3

⑻N8DWN4

⑼N9DWN4+2

13.对于第12题,若N1的地址为1470:

0000,其后的变量依次连续存放,试给出各变量的偏移量。

N7~N9变量的值是多少?

14.如果定义了如第12题所示的变量,下列指令执行的结果是什么(若语句正确,则给出执行结果;若不正确,说明错误原因)?

⑴ADDN1,10

⑵MOVAL,N2

⑶SUBN3,N2

⑷MOVAL,N3+2

⑸LEADX,N4+2

⑹XORN5,0FH

⑺MOVN4+1,CX

⑻ANDN1,01234H

⑼NUM1EQU89

ADDNUM1,10

⑽NUM2EQU100

NUM2EQU120

15.假设有下列数据定义语句:

⑴M1DB10

⑵M2DW2345H

⑶M3DD987865H

试写出汇编程序对这些语句汇编后所生成的值(例如M2单元、M2+1单元的内容)。

16.有以下程序片段,试问汇编后符号L1和L2的值各为多少?

BUF1DB1,2,3

BUF2DW5,6,7

L1EQU$-BUF2

L2EQUBUF2-BUF1

17.若AX=0ABCDH,BX=7F8FH,CF=1。

求分别执行8086CPU指令

⑴ADD AX,BX                  ⑵ADC AX,BX

⑶SBB AX,BX                  ⑷NEG AX

⑸ANDAX,BX                   ⑹OR  AX,BX

⑺XOR AX,BX                 ⑻IMULBL

后,AX寄存器中的内容,

18.指出下列指令中哪些是错误的,并指出错在何处?

⑴MOVDL,[DX]             ⑵MOVES,2000H

⑶SUB[BX],[SI]           ⑷ADDAX,[BX+CX]

⑸XCHGDS,[2400H]         ⑹DEC15H

⑺INAL,DX               ⑻OUT300H,AX 

解答

⑴错,DX不能作为间接寻址的寄存器。

   ⑵错,立即数不能直接送给段寄存器。

   ⑶错,两个存储单元间内容不能直接相减。

   ⑷错,CX寄存器不能作为变址寄存器。

   ⑸错,不允许段寄存器与存储单元内容进行交换

   ⑹错,减1指令不能对段寄存器直接操作

   ⑺对

   ⑻错,输出指令的地址若是16位,必须用DX间址。

 

19.下列程序段执行后AX=?

设数据段有:

TABLE   DW100,200,300,400

                    ENTRY  DW3

代码段          对DS初始化

                    MOV    BX,OFFSETTABLE

                    MOV     SI,ENTRY

                    MOV     AX,[BX+SI]

 

20.若SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令

           PUSH  AX

           PUSH      BX

           PUSHF

           POPCX

           POP DX

之后,SP=?

SS=?

CX=?

DX=?

并画图指出堆栈中各单元的内容。

解答:

  SS=1000H

               SP=1FFEH

               CX=2115H

              DX=5678H

   栈中各单元内容如下所示:

           

地址

RAM

11FFAH

2115

11FFCH

5678

11FFEH

1234

12000H

 

 

 

 

 

 

 

 

 

21、读下列程序段:

写出;

(1)每条指令连续执行后,哪些寄存器发生变化?

内容是什么?

(2)程序段执行完后,BX寄存器的肉容是什么?

MOVBX,3F93H

MOVCL,4

ADDBX,CL

MOVAL,BL

ANDAL,0FH

0RAL,30H

程序编写及程序填空:

1)修改例2-1程序,输出传送到目的缓冲区dbuffer中的字符串。

修改提示:

①DS应指向附加段

②dbuffer中的字符串应加字符串结束符$

③执行DOS功能调用的9号子功能输出dbuffer中的字符串

(2)写程序,输出演示系统的欢迎词,输出格式的最低要求如下:

***********************************************

**

*英文(中文)欢迎词*

**

***********************************************

提示:

通过编写与调试该程序,掌握两段结构的程序设计、输出数据的格式编排(由ASCII码0AH和0DH控制换行和回车操作)、DOS功能调用,熟悉宏汇编程序调试的上机过程。

(3)编程计算3550H-2320H,按16进制输出计算所得的差1230H。

再输出3550H-2321H的差,检验程序的正确性。

提示:

考虑依次将1230H(即0001001000110000B)从高位到低位,每4位二进制数一组分离出来,再将4位二进制数转换为ASCII码,利用DOS系统功能调用的2号子功能输出,就得到16进制数据的输出效果。

本题要求综合应用移位操作、逻辑操作等指令,并利用条件转移指令实现简单的循环程序,

6.4实习题

(1)编程完成在一个源字符串中搜索子字符串的功能(要求使用串比较指令cmpsb进行各次搜索),并输出搜索结果。

提示:

例如,源串为:

Howareyou?

子串为:

are

搜索方法如下:

①源串中含有子串are时,搜索过程如图3.1所示。

H

o

w

a

r

e

y

o

u

源串

a

r

e

第一次搜索

a

r

e

第二次搜索

a

r

e

搜索到子串,搜索结束

图3.1源串中含有子串时的搜索过程

②源串中不含子串arr时,搜索过程如图3.2所示。

H

o

w

a

r

e

y

o

u

源串

a

r

r

第一次搜索

a

r

r

第二次搜索

a

r

r

最后一次搜索,搜索结束

图3.2源串中不含子串时的搜索过程

每一次搜索用repzcmpsb指令完成。

第一次搜索时,寄存器SI指向源串,寄存器DI指向子串,每搜索一次,SI指向源串的下一个字符,DI总是指向子串起点,然后进行两串比较,串比较的长度为子串长度。

在整个搜索操作中,最多搜索的次数为:

源串长度-子串长度+1。

程序基本流程如图3.3所示。

 

(2)编程实现从键盘输入学生分数等级:

A、B、C、D、E,统计每种分数等级的人数并求平均成绩(要求用跳转表实现程序分支),输出统计结果,要求输出信息意义清楚。

提示:

实现所要求功能的程序流程如图3.4所示,当键入ESC键时结束成绩输入,ESC键的ASCII码为27(十六进制1BH)。

 

图3.4统计成绩程序流程图

(3)编程实现一维数组的排序操作。

要求:

主程序准备待排序的数据,调用子程序进行排序。

子程序接收3个参数:

数组名、数组长度、排序标志(=1:

从大到小排序;=2:

从小到大排序)。

子程序根据主程序由寄存器传递的排序标志,对指定数组从大到小或从小到大排序。

提示:

程序流程如图3.5所示。

 

图3.5排序程序流程图

(4)编写一个程序,完成自然数1到100的求和运算。

 

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1