汇编指令复习题汇总Word格式.docx

上传人:b****5 文档编号:20399058 上传时间:2023-01-22 格式:DOCX 页数:25 大小:25.27KB
下载 相关 举报
汇编指令复习题汇总Word格式.docx_第1页
第1页 / 共25页
汇编指令复习题汇总Word格式.docx_第2页
第2页 / 共25页
汇编指令复习题汇总Word格式.docx_第3页
第3页 / 共25页
汇编指令复习题汇总Word格式.docx_第4页
第4页 / 共25页
汇编指令复习题汇总Word格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

汇编指令复习题汇总Word格式.docx

《汇编指令复习题汇总Word格式.docx》由会员分享,可在线阅读,更多相关《汇编指令复习题汇总Word格式.docx(25页珍藏版)》请在冰豆网上搜索。

汇编指令复习题汇总Word格式.docx

Moval,num(num是给学生编号)

Xlat(查表指令)

9.ax和内存单元y相加,结果存于y

Addy,ax

10.ah和al相加,结果存于ah

Addah,al

11.内存单元x和内存单元y相加,结果存于x

Movax,y

Movx,ax

12.求bx减100

Subbx,100

13.求ax、si、进位位之和,结果存于ax

Adcax,si

14.求ax减si,并减去借位位,结果存于ax

Sbbax,si

15.将内存单元x加1,写出两种指令,有何异同?

Addx,1

Incx(inc是只增指令,直接加1,不影响cf标志)

16.将内存单元y减1,写出两种指令。

Suby,1

Decy

17.求dx的相反数。

Negdx

18.比较si和di

Cmpsi,di(si对于di,即将si-di来进行比较)

19.求ax和bx的乘积(有符号数乘法)

Imulbx

20.设x、y为字节单元,求x*y(无符号数乘法),积存于字单元z中。

Moval,x

Muly

Movz,ax

21.将al扩展到ax

Cbw(cbw只认al到ax,其他的都不行,可以和14比较)

22.将bh扩展到bx

Moval,bh

Cbw

Movbx,ax

23.将ax扩展到dx:

ax

Cwd(cwd也只扩展到dx:

ax)

24.逻辑运算指令练习

已知有内存变量:

X1=12h,x2=34h,x3=56h,x4=78h,x5=9ah,x6=0bch,x7=0deh,y1=12h,y2=34h,y3=56h,y4=78h,y5=9ah,y6=0bch,y7=0deh,另设(al)=0abh,求:

求x1与al

求x2或al

求x3异或al

求x4位相反数

将x5的高四位清零

将x6的低三位置1

将x7的第0、2、4、6位取反

测试al是否为偶数?

将y1逻辑左移2位

将y2逻辑右移3位

将y3算术左移1位

将y4算术右移4位

将y5循环右移2位

将y6循环左移1位

将y7带进位循环右移1

解:

datasegment

X1db12h

X2db34h

X3db56h

X4db37h

~

Y7db0deh

Dataends

Codesegment

Assumecs:

code,ds:

data

Start:

movax,data

Movds,ax

Moval,0abh

Andx1,al(求x1和al)

Orx2,al(求x2或al)

Xorx3,al(求x3异或al)

Notx4(x4的相反数)

Andx5,0fh(将x5的高四位清空)

Orx6,00000111b(将x3的低三位置1)

Xorx7,01010101b(将x7的0,2,4,6,8位相反)

Testal,1(测试al是否为偶数)

Shly1,2(逻辑左移2位)

Shry2,3(逻辑右移3位)

Saly3,1(算术左移1位)

Sary4,4(算术右移4位)

Rory5,2(循环右移2位)

Roly6,1(循环左移1位)

Rcry7,1(将y7带进位循环右移1位)

三.

1.按要求完成进制转换

(1)78ch=011110111100b=1980d

(2)562q=101110010b=370d

(3)90d=01011010b=5ah

(4)1110100.111b=164.7q=74.eh

2.当字长位八位时,写出下面各数的原码,补码和反码

(1)25

(2)-25(3)100(4)-100

原码:

00011001100110010110010011100100

反码:

00011001111001100110010010011011

补码:

00011001111001110110010010011100

(真值的由来100=64+32+4=26+25+22=0*27+1*26+1*25+0*24+0*23+1*22+0*21+0*20,

所以100的真值是01100100,正数的真值=原码=补码=反码)

3.列出数字0~9、大写字母a~z、小写字母a~z的ascii码值

30h~39h41h~5ah61h~7ah

4.完成下列二进制数的加减运算

(1)10101010+11110000=110011010

(2)11001100+01010100=100100000

(3)11011010-01010010=10001000

(4)11101110-01001101=10100001

5.说明二进制(bit)、字节(byte)、字(word)、双字(doubleword)的含义及互相的关系。

位(bit):

一个二进制

字节(byte):

8位二进制

字(word):

一般为机器字长,在8086机器中为16位二进制,即两个字节

双字(doubleword):

双倍字长,在8086机器中为32位二进制

6.8088微处理器中有哪些寄存器?

说明它们的功能及分组情况?

7.一台微型计算机,数据线有8根,地址线有16根,如果采用字节编址,那么它可以访问的最大存储空间是多少字节?

试用十六进制数来表示该机的地址范围?

答:

216=64kb,0000h~ffffh

8.8086的寄存器中,有哪些16位寄存器可分为两个8位寄存器来使用?

答:

ax(ah,al)、bx(bh,bl)、cx(ch,cl)、dx(dh,dl)

9.8086/8088的标志寄存器f种有哪些标志位?

它们的名称和功能是什么?

cf—进位标志(carryflag)。

若cf=1,表示算术运算时产生进位或借位,否侧cf=0.

移位指令会影响cf

pf—奇偶标志(parityflag).若pf=1,表示操作结果中“1”的个数为偶数,否侧

pf=0。

这个标志主要用于检查数据传送过程中的错误。

af—辅助进位标志(auxiliarycarryflag).若af=1表示字节运算产生低半字节向高半字节的进位或错位,否则af=0。

辅助进位也称半进位标志,主要用于bcd码运算的十进制调整。

zf—全零标志(zeroflag).若zf=1,表示操作结果全为零,否则zf=0.

sf—符号标志(signflag)。

若sf=1,表示符号数运算后的结果为负数,否则sf=o.

of—溢出标志(qverflowflag).若of=1,表示当进行算术运算时,结果超过了最大范围,否则of=0.

if—中断允许标志(interruptflag).若if=1,则cpu可以响应外部可屏蔽中断请求;

若if=0,则cpu不允许响应中断请求。

If的状态可由中断指令设置。

df—方向标志(directionflag).若df=1,表示执行字符串操作时按着从高地址向低地址方向进行;

否则df=0.df位可由指令控制。

tf—单步标志(traceflag).又称跟踪标志。

该标志位在调试程序时可直接控制cpu的工作状态。

当tf=1时为单步操作,cpu每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;

若tf=0,则cpu继续执行程序。

10.在8086系统中,段地址和偏移地址如下表示,请分别计算它们的物理地址

(1)f000:

0100物理地址:

f0000h+0100h=f0100h

(2)2350:

1abc23500h+1abch=24fbc

(3)3200:

123432000h+1234h=33234h

(4)5000:

010f50000h+010eh=5010eh

(5)10e0:

202010e00h+2020h=12e20h

(6)2010:

102020100h+1020h=21120h

(7)1000:

100010000h+1000h=11000h

(8)c0c0:

c0c0c0c00h+c0c0h=cccc0h

11.8086/8088指令系统中操作数的类型有哪几种?

关于操作数的寻址方式有哪几类?

(1)立即数、寄存器数和内存单元数。

(2)立即寻址、寄存器寻址、寄存器间接寻址、值接寻址、寄存器相对寻址、

基址加变址寻址、基址加变址相对寻址

12.指出段地址、偏移地址与物理地址之间的关系。

有效地址ea是指什么?

段地址左移四位加上偏移地址形成20位的物理地址。

ea是指段内偏移地址,即表示段内某单元相对于段起始地址的空间位置。

13.指出能用于寄存器间接寻址及变址寻址的寄存器有哪些?

它们通常与哪个段寄存器配合形成物理地址?

能用于寄存器间接寻址及变址寻址的寄存器有基址寄存器bx和bp,变址寄存器si和di,bx、si、di与ds配合形成物理地址,而bp与ss配合形成物理地址。

14.用汇编语言指令实现以下操作

(1)将寄存器ax、bx和dx的内容相加,和放在寄存器dx中

adddx,ax

adddx,bx

(2)用基址变址寻址方式(bx和si)实现al寄存器的内容和存储器单元buf中的一个字节相加的操作,和放到al中。

addal,[bx][si]

(3)用寄存器bx实现寄存器相对寻址方式(位移量为100h),将dx的内容和存储单元中的一个字相加,和放到存储单元中。

add100h[bx],dx

(4)用直接寻址方式(地址为0500h)实现将存储器中的一个字与立即数3abch相加,和放回该存储单元中

addwordptr[500h],3abch

15.指出下列指令中源操作数及目的操作数的寻址方式。

(1)subbx,[bp+35]

寄存器寻址寄存器相对寻址

(2)movax,2030h

寄存器寻址立即寻址

(3)mov[di+bx],ax

基址加变址寻址寄存器寻址

(4)addax,50h[di]

(5)moval,[1300h]

寄存器寻址直接寻址

(6)mulbl

寄存器寻址目的操作数为隐含寄存器(bl隐含的是al,若bx,则隐含ax)

16.已知(ds)=1000h,(si)=0200h,(bx)=0100h,(10100h)=11h,(10101h)=22h,

(10600h)=33h,(10601h)=44h,(10300h)=55h,(10301h)=66h,(10302h)=77h,

(10303h)=88h,试分析下列各指令执行完后ax寄存器的内容。

(1)Movax,2500h

(ax)=2500h

(2)Movax,500h[bx]

(ax)=4433h

(3)Movax,[300h]

(ax)=6655h

(4)Movax,[bx]

(ax)=2211h

(5)Movax,[bx][si]

(6)Movax,[bx+si+2]

(ax)=8877h

17.判断下列指令是否有错,如果有错,说明理由

(1)subbl,bx

两个操作数的宽度不一样

(2)movbyteptr[bx],3456h

3456h太大

(3)shlax,ch

移位的位数不能是ch(只能是cl)

(4)movah,[si][di]

不能用两个变址寄存器来作为源操作数

(1.[si]、[di]2.[bx]、[bp]只能1和2配,不能1和1或是2和2配)

(5)shrax,4

对的

(6)movcs,bx

不能对cs实现传送操作

(7)mov125,cl

立即数不能作为目的操作数(若是125加上[]变为内存,则行)

(8)movax,byteptr[si]

字节不能传送到字里面(源操作数限定为字节,与目的操作数宽度不同,不能实现传送)

(9)mov[di],[si]

两个操作数不能同时为内存

12.设(ds)=1000h,(es)=2000h,(ss)=3000h,(si)=0080h,(bx)=02d0h,

(bp)=0060h,试指出下列指令的源操作数字段是什么寻址方式,它的物理地址是多少?

(1)movax,0cbh

立即寻址

(2)movax,[100h]

直接寻址

物理地址为:

10100h

(3)movax,[bx]

寄存器间接寻址

102d0h

(4)movax,[bp]

20060h

(5)movax,[bp+50]

寄存器相对寻址

200b0h

(6)movax,[bx][si]

基址加变址寻址

10350h

13.分别说明下列每组指令中的两条指令的区别

(1)andcl,0fhorcl,0fh

按位相“与”按位相“或”

高四位为0000高四位保留原值

低四位保留原值低四位为1111

(2)movax,bxmovax,[bx]

bx为寄存器的内容送到axbx为寄存器内存单元的内容送到ax

(3)subbx,cxcmpbx,cx

把相减的结果给bx不把结果给bx,根据标志位的情况做进一步的动作

(4)andal,01htestal,01h

Al内容与01h相“与”·

结果为“000000x”·

把结果送回al不把结果给al(即不保存结果)

(5)rolax,clrclax,cl

循环左移,进位标志不参与循环循环左移,进位标志参与循环

(6)pushaxpopax

入栈(将ax内容存入栈顶指针处)出栈(将栈顶内容弹出装入ax中)

14.试分析以下程序段执行完后bx的内容是什么

movbx,1030h1030h=1000000110000

movcl,3左移3位得1000000110000000=8180h

shlbx,cl

decbxdec减1得1000000101111111=817f

 

15.写出下列指令序列中每条指令的执行结果,并在debug环境下验证,注意各标志位的变化情况.

movbx,126bh

addbl,02ah

movax,2ea5h

addbh,al

sbbbx,ax

adcax,26h

subbh,-8

16.8086汇编语言指令由几部分组成?

各部分的作用是什么?

(1)由[名字](指令操作符)[操作数][注释]组成

(2)[名字]可以是常量名,变量名,过程名,段名等标识符,起标识和标记的作用。

(指令操作符)字段说明指令的功能

[操作数]字段提供指令操作所需要的源数据和目的数据

[注释]用于程序员对语句或程序段落进行解释说明

17.请解释变量和标号的含义,两者有何区别?

所定义内存单元的名称为变量,可进行读写功操作。

一般为数据区。

标号是某条指令的地址标记,在代码段

18.试描述汇编语言源程序的一般结构

stacksegmentstack

dw256dup(?

stackends

datasegment

·

·

dataends

codesegment

assumecs:

code,ss:

stack,ds:

start:

codeends

endstart

19.在buf1变量中一次存储了5个字数据,接着定义了一个名为buf2的字单元,表示如下

buf1dw8765h,6ch,0,1ab5h,47eah

buf2dw?

(1)设bx中是buf1的首地址,请编写指令将数据50h传送给buf2单元

movmordptr[bx+10],50h

(2)请编写指令将数据ffh传送给数据为0的单元.

movmordptr[bx+4],0ffh

20.下面是一个数据段的定义,请用图表示它们在内存中存放的形式

datasegment

a1db25h,35h,45h

a2db3dup(5)

a3dw200,3ab6h

a4dw3000h,6a6fh

a125h

35h

45h

a205h

05h

a300h

02h

b6h

3ah

a400h

30h

6fh

6ah

21.有一个数据段定义了如下6个变量,请写出该数据段

(1)buf1为十进制数字节变量:

64;

(2)buf2为字符串变量:

’teacher’;

(3)buf3为十六进制数字节变量;

2fh;

(4)buf4为双字变量:

657ah;

(5)buf5为字变量:

657ah;

(6)buf6为二进制数字节变量:

10101101b。

buf1db64

buf2db‘teacher’

buf3db2fh

buf4dd657ah

buf5dw657ah

buf6db10101101b

一、熟悉用汇编语言编写程序的基本结构

现有程序:

Datasegment

firstdwf234h,1122h(不能以字母开头,在前面加零,写成0f234h)

seconddw5678h,9765h(要在英文状态下写,才是半角)

thirddw?

?

asumecs:

data(是assume)

Start:

m0vax,data(是o,不是零)

movds,ax

movax,first1(buyao1)

addax,second

movthird,ax

movax,first+2

adcax,second+2

movthird+2,ax

jmp$

Codeends

endsstart(改为end)

1、在系统中输入上述程序,编译后改正错误,直到调试通过。

(提示:

有6处错误)

2、为每个语句加上注释,写清每个语句的含义和作用。

3、整个程序完成什么功能?

在系统中查看运行后的结果。

(48ach,0410h)

三、将下列注释中的问题用指令编程实现。

;

定义三个变量:

x1=12h,x2=34h,x3=56h

assumecs:

将data段初值装载到ds段寄存器中

movax,1111h

movbx,2222h

movdx,3333h

movcx,0cccch

1、将寄存器ax、bx和dx内容相加,和放在寄存器dx中,ax、bx中值不变。

2、将x1的值送给y

3、将x2的值减去al的值。

4、求x3的相反数。

5、将cx的最高位清0.

6、将cx的最低3位置1.

7、将cx的第13、14位取反。

(最低位为第0位)

8、将ax逻辑左移2位。

9、将bx算术右移1位。

10、将bx循环左移3位。

codeends

Ydb?

movdx,0ccch

moval,x1

movy,al

subx2,al

negx3

andcx,01111111b

orcx,00000111b

xorcx,0000000000001100b

shlax,2

sarbx,1

rolbx,3

四、顺序程序设计

1、计算z=x-y。

其中,x、y、z均为字节型变量。

设x=4,y=6。

要求:

运算后,x、y的值不被破坏。

检查z中的结果显示什么?

其真值是多少?

Xdb,4

Ydb,6

Zdb,?

start:

movdx,ax

movax,4

movbx,6

subax,bx

movz,dx

2、编程将字型变量a的高4位置0,低4位置1,中间8位取反。

Adw1234h

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

当前位置:首页 > 外语学习 > 英语考试

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

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