指令练习(1)

更新时间:2023-09-12 13:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MOV指令练习

1.将1234H赋给CX

MOV CX,1234H

2.将BH的内容设置成和BL相同。

MOV BL,BH

3.执行MOV AL,-5H后,AL里是什么内容?(二进制表示) 11111011

4.将DL里的内容存到1000H单元。

MOV [1000H],DL

5.将地址为1000H的存储单元里的字节内容拷贝到地址为2000H单元。 MOV DH,[1000H]

MOV [2000H],DH

6.将地址为1000H的存储单元里的字内容拷贝到地址为2000H单元。 MOV SI,[1000H] MOV [2000H],SI 7.将DS的值赋给ES。 MOV AX,DS MOV ES,AX

8.将1234H赋给DS。 MOV BX,1234H

MOV DS,BX

9.将66H(字节)赋给地址为2000H的单元。 MOV BYTE PTR [2000H],66H

10.将66H(字)赋给地址为3000H的单元。 MOV WORD PTR [3000H],66H 二.堆栈指令练习 PUSH POP 1.将AX入栈。

PUSH AX

2.将1000H单元里的内容入栈。 PUSH [1000H] 3.将AL入栈。 PUSH AX

4.将1234H入栈。 MOV AX,1234H PUSH AX

5.将出栈数据存入BX。 POP BX

6.将出栈数据存入20H单元。

POP [20H]

7.用三种方法实现将AX、BX数据交换。 a. .MOV CX,AX

MOV AX,BX MOV BX,CX

b. PUSH AX PUSH BX POP AX POP BX

c. XCHG AX,BX

8.已知全班汇编语言成绩表存放在以mark为首地址的存储区内,根据学生编号(从0号开始)查询该生成绩。 算术运算类指令练习

MOV BX,OFFSET MARK(在前面加offset意思是把分数取出) MOV AL,NUM(num是给学生编号) XLAT(查表指令)

9.AX和内存单元Y相加,结果存于Y ADD Y,AX

10.AH和AL相加,结果存于AH

ADD AH,AL

11.内存单元X和内存单元Y相加,结果存于X MOV AX,Y MOV X,AX 12.求BX减100

SUB BX,100

13.求AX、SI、进位位之和,结果存于AX ADC AX,SI

14.求AX减SI,并减去借位位,结果存于AX SBB AX,SI

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

ADD X,1

INC X(INC是只增指令,直接加1,不影响CF标志) 16.将内存单元Y减1,写出两种指令。 SUB Y,1 DEC Y

17.求DX的相反数。 NEG DX 18.比较SI和DI

CMP SI,DI(SI对于DI,即将SI-DI来进行比较) 19.求AX和BX的乘积(有符号数乘法)

IMUL BX

20.设X、Y为字节单元,求X*Y(无符号数乘法),积存于字单元Z中。 MOV AL,X MUL Y

MOV Z,AX 21.将AL扩展到AX

CBW (CBW只认AL到AX,其他的都不行,可以和14比较) 22.将BH扩展到BX

MOV AL,BH

CBW

MOV BX,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 解:DATA SEGMENT

X1 DB 12H

X2 DB 34H X3 DB 56H X4 DB 37H ~

~

Y7 DB 0DEH DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

MOV AL,0ABH

AND X1,AL(求X1和AL) OR X2,AL(求X2或AL) XOR X3,AL(求X3异或AL)

NOT X4(X4的相反数)

AND X5,0FH(将X5的高四位清空)

OR X6,00000111B(将X3的低三位置1)

XOR X7,01010101B(将X7的0,2,4,6,8位相反) TEST AL,1(测试AL是否为偶数) SHL Y1,2(逻辑左移2位) SHR Y2,3(逻辑右移3位) SAL Y3,1(算术左移1位) SAR Y4,4(算术右移4位) ROR Y5,2(循环右移2位)

ROL Y6,1(循环左移1位)

RCR Y7,1(将Y7带进位循环右移1位) 三.

1.按要求完成进制转换

(1)78CH=011110111100 B=1980 D (2)562Q= 101110010B=370D

(3)90D= 01011010B=5A H

(4)1110100.111B= 164.7Q=74.EH

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

(1)25 (2)-25 (3)100 (4)-100 原码:00011001 10011001 01100100 11100100 反码:00011001 11100110 01100100 10011011 补码:00011001 11100111 01100100 10011100

(真值的由来100=64+32+4=22+2=0*2+1*2+1*2+0*2+0*2+1*2+0*2+0*2, 所以100的真值是01100100,正数的真值=原码=补码=反码) 3.列出数字0~9、大写字母A~Z、小写字母a~z的ASCII码值 30H~39H 41H~5AH 61H~7AH 4.完成下列二进制数的加减运算

(1)10101010+11110000=110011010 (2)11001100+01010100=100100000 (3)11011010-01010010=10001000 (4)11101110-01001101=10100001

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

字节(byte):8位二进制

字(word):一般为机器字长,在8086机器中为16位二进制,即两个字节 双字(double word):双倍字长,在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)

6+5

2

7

6

5

4

3

2

1

0

9.8086/8088的标志寄存器F种有哪些标志位?它们的名称和功能是什么?

答:CF—进位标志(Carry Flag)。若CF=1,表示算术运算时产生进位或借位,否侧CF=0. 移位指令会影响CF

PF—奇偶标志(Parity Flag).若PF=1,表示操作结果中“1”的个数为偶数,否侧 PF=0。这个标志主要用于检查数据传送过程中的错误。

AF—辅助进位标志(Auxiliary carry flag).若AF=1表示字节运算产生低半字节向高半字节的进位或错位,否则AF=0。辅助进位也称半进位标志,主要用于BCD码运算的十进制调整。

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

SF—符号标志(Sign flag)。若SF=1,表示符号数运算后的结果为负数,否则SF=O. OF—溢出标志(Qverflow flag).若OF=1,表示当进行算术运算时,结果超过了最大范围,否则OF=0.

IF—中断允许标志(Interrupt flag).若IF=1,则CPU可以响应外部可屏蔽中断请求;若IF=0,则CPU不允许响应中断请求。IF的状态可由中断指令设置。

DF—方向标志(Direction flag).若DF=1,表示执行字符串操作时按着从高地址向低地址方向进行;否则DF=0.DF位可由指令控制。

TF—单步标志(Trace flag).又称跟踪标志。该标志位在调试程序时可直接控制CPU的工作状态。当TF=1时为单步操作,CPU每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;若TF=0,则CPU继续执行程序。

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

(1)F000:0100 物理地址:F0000H+0100H=F0100H (2)2350:1ABC 23500H+1ABCH=24FBC (3)3200:1234 32000H+1234H=33234H (4)5000:010F 50000H+010EH=5010EH

(5)10E0:2020 10E00H+2020H=12E20H (6)2010:1020 20100H+1020H=21120H

(7)1000:1000 10000H+1000H=11000H (8)C0C0:C0C0 C0C00H+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中 ADD DX,AX ADD DX,BX

本文来源:https://www.bwwdw.com/article/6kjh.html

Top