汇编考试基础速成

数码0~9的ASCII码:30H~39H

大写字母A~Z:41H~5AH

小写字母a~z:61H~7AH

0dH:回车控制字符

0aH:换行控制字符

AH/AL  AX称为累加器,用于算术与逻辑运算;与外设传送信息

BH/BL  BX称为基址寄存器,存放存储器地址;用于算术与逻辑运算

CH/CL  CX称为计数器,循环和串操作等指令中的隐含计数器;用于算术与逻辑运算

DH/DL  DX称为数据寄存器,存放双字长数据的高16位;存放外设端口地址;用于算术与逻辑运算

SI 源变址寄存器,通常用于对数据段进行寻址

DI 目的变址寄存器,通常用于对附加段进行寻址

SP 基址指针寄存器,用于对堆栈段进行寻址(PUSH、POP指令);指示栈顶的偏移地址

BP 堆栈指针寄存器,通常用于对堆栈段进行随机寻址

(1)什么是标志?

用于反映指令执行结果的状态或用于控制指令的执行形式

(2)用途

指令执行后将影响有关的标志位,很多的指令的执行要利用某些标志

(3)状态标志与控制标志间的区别

状态标志用于记录指令执行结果的辅助信息

控制标志用于控制处理器执行指令的方式

15   14    13   12   11   10    9   8    7     6    5   4    3    2    1    0

OF

DF

IF

TF

SF

ZF

AF

PF

CF

CF  进位标志

PF  奇偶标志

AF  辅助进位标志

ZF  零标志

SF  符号标志

OF  溢出标志

DF  方向标志

IF  中断允许标志

TF  陷阱标志

字或双字的存放:字或双字在存储器中占相邻的2个或4个存储单元;存放时,低字节存入低地址,高字节存入高地址。

地址对齐:字单元要安排在偶地址(xxx0B),双字单元要安排在模4地址(xx00B),……。

对齐的原因:取得较高的存取速度。

逻辑地址:段地址:偏移地址

物理地址:每个存储器单元都有的一个唯一的20位地址

物理地址=逻辑地址中的段地址左移4位(二进制),加上偏移地址

4种逻辑段

CS(代码段):存放程序的指令序列;CS存放代码段的地址,IP指示偏移地址,用CS:IP取得下一跳要执行的指令

SS(堆栈段):确定堆栈所在的主存区域;SS存放堆栈段的段地址,SP指示偏移地址;对于PUSH、POP指令,用SS:SP操作堆栈中的数据;对于随机存取堆栈中的数据,用SS:BP操作

DS(数据段):存取当前所运行程序所使用的数据,DS存放数据段的段地址,偏移地址(EA)由各种主存寻址方式得到,用DS:EA表示逻辑地址

ES(附加段):用于存取数据,串操作指令将其作为目的操作数的存放区域

数据的默认段是DS,允许在其他段存放数据,使用段超越前缀指令指明是哪个逻辑段

解释:[X]补=80H=10000000B,为负数,│X│=[[X]补]求补=10000000 B

所以X= - 80H

解释:[X]补 = 98H =10011000B,X为负数,

则[-X]补= 01101000 B,[-X]补/2= 00110100B

[X]补/2= 【[-X]补/2】求补 = 11001100B = 0CCH

解释:[X+Y]补=[X]补+[Y]补 ;   [X]补=[X]原=01001110B =78

[Y]补=【83】求补 = 10101101B

所以,[X+Y]补= 11111011B=0FBH

堆栈:一个采用“先进后出”原则的数据暂存区域。使用堆栈操作指令时,利用SS:SP来寻址;对堆栈进行随机访问时,利用SS:BP来寻址。

堆栈操作的过程:在进栈指令PUSH压栈时,先将SP—2→SP,然后将要压入的字压入到SS:SP所指示的单元中;在出栈指令POP弹栈时,先将SS:SP所指示的字单元中的内容弹出来送到目标地址中,然后将SP+2→SP。

实验教程  P50  第22题 判断题

(1)mov  bl ,cx     错误   (解释:两个操作数长度不匹配)

(2)mov  ds ,ss     错误   (解释:段寄存器之间不能进行数据传输)

(3)mov  [bx] , [di]   错误   (解释:存储器之间不能进行数据传输)

(4)mov  al , [bx][si]    正确

(5)mov  es , al    错误   (解释:两个操作数长度不匹配)

(6)mov  ds , dx    正确

(7)mov  cs , ax    错误   (解释:不能对CS进行赋值)

(8)mov  bx , cs    正确

(9)mov  ds , 1230H    错误   (解释:不能对段寄存器用立即数赋值)

(10)jcxz  next        正确

(11)xchg  bx , 3      错误   (解释:不能直接与立即数进行数据互换XCHG)

(12)pop  cs        错误   (解释:不能对CS进行任何操作)

(13)mov   ip , si     错误   (解释:不能直接对IP进行任何操作)

(14)push  cs    错误   (解释:不能对CS进行任何操作)

(15)push  bl    错误   (解释:PUSH和POP指令是对16位二进制数操作)

(16)mov  [sp] , bx    错误   (解释:SP只能用于PUSH和POP指令中的寻址)

(17)mov  ax , bx+3    错误   (解释:源操作数的表达式非法)

(18)mov  ax , [bx+3]     正确

(19)mov  bx , [bx]    正确

(20)mov  bh , [bl]    错误   (解释:BL不能用作指针,因为它是8位寄存器)

(21)xchg  es , ax     错误   (解释:依据XCHG指令定义,不能与段寄存器进行数据互换)

(22)lea  ax , [bx+si]    正确

(23)mul  10H          错误   (解释:乘法指令的另一个操作数只能是寄存器或内存单元)

(24)imul  dx , 10H    错误   (解释:乘法指令的一个操作数是默认的AX/AL)

(25)div  10     错误   (解释:除法指令的另一个操作数只能是寄存器或内存单元)

(26)idiv  dx , 10H    错误   (解释:除法指令的一个操作数是默认的DX.AX/AX)

(27)shl  ax , cx      错误   (解释:移位次数必须放在CL中,CL≥2)

(28)shr  bx , ch      错误   (解释:移位次数必须放在CL中,CL≥2)

(29)rol  bx , 20      错误   (解释:移位次数必须放在CL中,CL≥2)

(30)rcr  ax , cl      正确

(31) cmp  ax , 1234H      正确

(32)cmp  12H , cl     错误   (解释:源操作数不能是立即数)

实验教程  P51  第36题 判断题

(1)[ax]      错误      寄存器间接寻址方式只能用bx、bp、si、di等四个寄存器

(2) [di]      正确     寄存器间接寻址

(3) bp        错误     bp表示十六位寄存器,应改为[bp]

(4) [si+di]    错误    si和di均为变址寄存器

(5) ds        正确     寄存器寻址方式

(6) bh        正确     寄存器寻址方式

(7) [bx+bp+32]   错误     只有基址变址寻址方式,可改为相对基址变址寻址方式 [bx/bp + si/di + 32]  

(8) [bl+44]       错误    bl不能作为指针寄存器用,可改为寄存器相对寻址方式 [bx+44]

(9) [cx+90]       错误    cx不能作为指针寄存器用,寄存器间接寻址方式只能用bx、bp、si、di等四个寄存器;可改为寄存器相对寻址方式 [bx\bp\si\di + 90]

(10) dx          正确     寄存器寻址

(11) bx+90h      错误,忘记加 [  ]

(12) [dx]          错误   dx不能作为指针寄存器用,寄存器间接寻址方式只能用bx、bp、si、di等四个寄存器

(13) si[100h]       正确  寄存器相对寻址方式

(14) [bx*4]        错误   寄存器做指针寄存器使用时不能做乘法运算

(15) [ax+bx*6]     错误      ax不能作为指针寄存器用

(16)  [dx+90h]        错误  dx不能作为指针寄存器用,寄存器间接寻址方式只能用bx、bp、si、di等四个寄存器

你可能感兴趣的:(汇编)