文档库 最新最全的文档下载
当前位置:文档库 › 实验 内存操作数及寻址方式

实验 内存操作数及寻址方式

实验二:内存操作数及寻址方式

一、实验目的

1.进一步掌握Debug命令,学会使用Debug调试程序。

2.掌握数据在内存中的存放方式。

3.掌握与数据相关的7种寻址方式。

4.掌握简单指令的执行过程。

5.学会在DOS环境下汇编源程序的编辑、编译、链接和执行。

二、实验内容和步骤

1.寄存器内容互换。

(1)利用DEBUG命令,设置SP=2000H,AX=3000H,BX=5000H。

(2)利用堆栈作为中转,将AX和BX的内容互换。写出实现这一功能的指令序列。

(3)利用DEBUG命令对上述指令序列进行调试,并记录每个步骤的执行结果。

2.分析执行结果。

(1)利用DEBUG命令,设置BX=0300H,SI=0002H。

利用DEBUG命令,将存储器偏移地址为300H~304H的连续单元设置为0AH、0BH、0CH、0DH、0EH。MOV AX,BX

MOV AX,0304H

MOV AX,[0304H]

MOV AX,[BX]

MOV AX,0001[BX]

MOV AX,[BX][SI]

MOV AX,0001[BX][SI]

HLT

(2)

(3)在DEBUG环境中,输入以下指令序列:

MOV AX,BX

MOV AX,0304

MOV AX,[0302]

MOV AX,[BX]

MOV AX,0001[BX]

MOV AX,[BX][SI]

MOV AX,0001[BX][SI]

HLT

(4)在DEBUG环境下,调试上述指令序列,记录中间结果。

3.操作数存放方式。

(1)在DOS环境下,输入以下程序:

DA TA SEGMENT

V AR1 DW 1020H,3040H

V AR2 DB 3 DUP (0,1,2 DUP (4),5)

V AR3 DB ’good!’

V AR4 DD V AR1

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:

MOV AX,DATA

MOV DS,AX

MOV AX,V AR1

LEA BX,V AR3

MOV DL,[BX]

MOV AH,02H

INT 21H

MOV BX,WORD PTR V AR4

MOV WORD PTR [BX],3050H

MOV AH,4CH

INT 21H

CODE ENDS

END START

(2)编译并链接上述程序。

(3)在Turbo Debug环境下,打开可执行程序,观察并记录存储器中操作数的分配情况。

(4)单步跟踪该程序,记录每步执行后存储单元、寄存器内容的变化情况。

三、实验报告要求

1.写出每个步骤所使用的DEBUG命令,及执行情况。

2.给出2中(3)的每条指令源操作数的寻址方式。

寻址方式及指令系统习题与解答

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波2012年3月 一、单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为()。 A.13000H B.23000H C.33000H D.3000H 3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。 A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是()。 A.原码B.反码C.补码D.移码 5.用来作为寄存器间接寻址的寄存器有()个。 A.8 B.6 C.5 D.4 6.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是()。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL 11.下述指令中不影响CF的指令是()。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX 12.两个整数补码9CH和7AH相加运算后,会产生()。 A.无溢出且无进位B.无溢出但有进位

8086汇编语言指令的寻址方式有哪几类

1. 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 寄存器寻址最快 7. 下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。 XCHG CS , AX ;不能修改CS MOV [BX] , [1000] ;不能在两个内存单元之间直接进行数据传送 XCHG BX , IP ;不能用名字直接访问IP PUSH CS POP CS ;不允许直接修改CS值 IN BX , DX ;输入数据必须使用累加器AL或AX MOV BYTE [BX] , 1000 ;格式错误,且超范围,应为MOV word PTR [BX],1000 MOV CS , [1000];不允许直接修改CS值 20.带参数的返回指令用在什么场合?设栈顶地址为3000H,当执行RET 0006后,SP的值为多少? 利用堆栈传递参数时使用;对于近调用SP=3008H,对于远调用SP=300AH 27.设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶地址为多少?当执行 PUSH BX指令后,栈顶地址和栈顶2个字节的内容分别是什么? 栈顶地址:SS:SP,物理地址为:2FF00H;PUSH 完以后栈顶地址为:SS:SP=2010:FDFEH,即物理地址为:2FEFEH,内容为:57H 34H(由低地址到高地址) B P7 5. 设(DS)=3000H,(BX)=1100H,(CS)=0062H,(S1)=0002H,(31100H)=52H, (31101H)=8FH,(31162H)=6BH,(31163H)=99H,(31103H)=F6H, (32200H)=AAH,(32201H)=B6H,(32800H)=55H,(32801H)=77H,给出下列各指令执行后AX寄存器的内容: (1) MOV AX,BX (2) MOV AX,[BX] (3) MOV AX,4200H (4) MOV AX,[2800H] (5) MOV AX,1100H[BX] (6) MOV AX,[1160H+SI] 9. 分别执行下列各指令组,写出AX的内容: (1) MOV AX,93A4H NEG AX 73A4-8c5c,e689-1977 (AX)=6C5CH (2) XY DW "AB" MOV AX,XY (AX)=4142H (3) MOV AX,2B7EH MOV CX,4DB5H ADD AX,CX (AX)=7933H (4) XA DW 0BD57H MOV AX,0FBCDH AND AX,XA (AX)=B945H (5) STC MOV BX, 0B69FH MOV AX, 43A2H SBB AX, BX

内存操作数及寻址方式的使用

武汉工程大学 电气信息学院 《面向对象程序设计》实验报告[ 1 ] 专业班级过程装备与控制工程1 班 实验时间 2015 年 5 月 日 学生学号实验地点机电工程学院205 学生姓名指导教师华夏 实验项目内存操作数及寻址方式的使用 实验类别设计实验实验学时3学时 实验目的及要求通过实验掌握下列知识。 (1)DEBUG命令:G、N、W、L及Q。 (2)8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。 (3)8088指令:INC、DEC、LOOP、INT3、INT20H,寄存器SI、DI。 (4)8088汇编语言伪操作:BYTE PTR,WORD PTR. (5)求累加和程序和多字节加减法程序。 成绩评定表 类别评分标准分值得分合计 上机表现 按时出勤、遵守纪律 认真完成各项实验内容 30分

《电子线路CAD设计》实验报告 报告质量程序代码规范、功能正确 填写内容完整、体现收获70分 评阅教师: 日期:年月日

实验内容 (说明:此部分应包含:实验内容、实验步骤、实验数据与分析过程等) 1.一、实验内容、实验方法与步骤、实验数据与结果分析 1)内存操作数及各种寻址方式使用 (1)先输入程序内容,用A命令输入上述程序,运行如下: (2)并用T命令逐条运行,运行如下:

(3)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。程序运行如下:

(4)注意D命令显示结果中右边的ASCII字符及双字节数存放法。 (5)思考有关指令中的BYTE PTR及WORD PTR伪操作不加行不行,试一试。 2)求累加和程序 (1)用A命令将程序输入到100H开始的内存中,在输入时记下标号LOP和J的实际地址,在输入LOOP指令时LOP用实际地址代替。 (2)用命令NAA将此程序命名为文件AA (3)用R命令将BX:CX改为程序长度值 (4)用命令W100将此程序存放到AA命名的磁盘文件中

汇编语言内存操作数及寻址

实验一内存操作数及寻址 通过实验掌握下列知识: 80x86系统中数据在内存中的存放方式和内存操作数寻址方式。 80x86指令: MOV, ADD, SUB, ADC,SBB,INC, DEC, LOOP,CLC 伪指令与操作符: BYTE PTR, WORD PTR,OFFSET,SIZEOF。 简单字符串处理、多字节加减法。 一、内存操作数及各种寻址方式: 阅读下列程序段: ... ... .data wds WORD 1111h, 2222h, 3333h dwds DWORD 6 dup (0CDCDCDCDh) ... ... MOV AX, 1234h MOV EBX, OFFSET wds MOV [EBX], AX MOV BYTE PTR[EBX+2], 20h MOV DL, 39h MOV [EBX+4], DL ADD EBX, SIZEOF wds MOV ESI, 2 DEC DL MOV [EBX+ESI], DL DEC DL MOV [EBX+ESI+1], DL MOV WORD PTR[EBX+ESI+2], 1068h MOV DWORD PTR[EBX+ESI*4], 2846h 1)分析并写出每条指令执行的结果。 2)将程序补充完整,编译、连接后,单步执行,验证分析结果。 3) 说明程序中访问内存操作数的指令所使用的寻址方式,访问的内存地址,以及所访问的内存存储单元位数。 4)有关指令中BYTE PTR、WORD PTR、DWORD PTR伪指令不加会有何结果? 试一试。 二、阅读下列程序段: (指令CLC,Clear Carry Flag :清除进位标志) ...... MOV ECX,4 CLC L1:

实验7 寻址方式在结构化数据访问中的应用

计算机学院实验报告 课程汇编语言 实验名称实验7 寻址方式在结构化数据访问中的应用 专业计算机科学与技术 2018年 12 月 24 日 一、实验目的 1.定位内存单元的寻址方式汇总 2.寻址方式的综合应用

3.转移指令的分类和原理 4.熟悉在显存中编程的方法 二、实验内容及要求 ( 一) 寻址方式的汇总及综合应用 1.定位内存单元的寻址方式有几种,并举例说明。 2.寻址方式在结构化数据访问中的应用。 Power idea 公司从 1975 年成立一直到 1995 年的基本情况如下。 年份收入 ( 千美元 )雇员人均收入 ( 千美元 ) 1975163? 1976227? 19773829? 1978135613? 1979239028? 1980800038? 1995593700017800? 下面的程序中,已经定义好了这些数据: assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' ;年份 dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ; 公司总收入 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;公司雇员人数 data ends table segment db 21 dup('year summ ne ??') table ends

【VIP专享】汇编程序设计--内存操作数及寻址方法 实验报告

《汇编语言程序设计》 实验报告

实验二内存操作数及寻址方法 实验目的 通过实验掌握下列知识: 1、DEBUG命令:A,T,D,F,G; 2、数据在内存中的存放方式和内存操作数的几种寻址方式; 3、汇编指令:INC,DEC,LOOP,INT 3的应用; 4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。 实验内容和步骤 一、内存操作数及各种寻址方式使用 程序内容:寻址方式: MOV AX,2000 MOV [200],AX ;直接寻址 MOV BX,210 MOV BYTE PTR[BX],50 ;寄存器间接寻址 MOV CL,40 INC BX MOV [BX],CL ;寄存器间接寻址 DEC CL MOV SI,5 MOV [BX+SI],CL ;基址加变址寻址 MOV [BX+SI+1],CL ;基址变址相对寻址 MOV WORD PTR[BX+SI+2],1234 ;基址变址相对寻址 操作步骤 1)用A命令键入上述程序,并用T命令逐条运行。 2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注意是什么寻址方式。 注:D命令显示结果时,双字节数在内存的存放是高地址对应高数据位; 指令中出现的BYTE PTR及WORD PTR是因为操作数的宽度必须一致。

图 2-1 键入程序 图2-2 U命令查看程序

图2-3 T命令逐条运行,用D命令检查有关内存单元的内容相对应的寻址方式见程序处标注。 二、求累加和程序 程序内容: MOV BX,200 MOV CX,9 XOR AX,AX ADD AL,[BX] ;按字节相加 ADC AH,0 ;若有进位则到AH中 INC BX LOOP 108 INT3 操作步骤: 1)进入DEBUG环境。 2)用命令F 200 L10 40 在内存200H-20FH地址处填入一系列值40H。

寻址方式教案(1)

§3.1MCS-51单片机寻址教案 授课人:章谋学习目标:1、了解汇编指令的结构组成 2、掌握7种指令寻址方式的结构和特点 3、熟练运用汇编指令编写程序 计划课时:2学时 教学重点:掌握4种类型的寻址方式 教学难点:7种寻址方式在程序中的应用 教学方法:实例演示、小组讨论、软件仿真、当堂练习 第一课时 〖本节课的教学目标〗 1、学生能了解汇编指令语句格式 2、学生能区分出立即寻址、直接寻址、间接寻址的异同 教学过程 课前预习情况检查(预习卡1--3题的完成情况的检查) 一、课堂引入: 1、学生利用老师写好的程序载入下图进行运行并记录运行现象。 2、观察单片机系统中有硬件但没有程序运行所出现的现象。 3、观察单片机系统中有程序但硬件有故障所出现的现象。 循环彩灯效果图

彩灯实验箱实物连结图 org 0000h start:mov r0,#08 delay: mov r1,#10 mov r4,#08 de0: mov r2,#127 mov a,#0feh de1: mov r3,#200 loop1:mov p1,a de2: djnz r3,de2 acall delay djnz r2,de1 rr a djnz r1,de0 djnz r0,loop1 ret loop2:mov p1,a rl a acall delay djnz r4,loop2 循环彩灯应用程序 ajmp start

二、课堂自学: 1、学生自学,了解汇编指令的组成 Start : mov a, #30h ; (A) ←30H 标号( );指令助记符( );目的操作数( ); 源操作数( ) 释( ) 注:指令操作数可能有2个或3个,也可能只有1个或1个也没有。 2、小组讨论,完成寻址方式的分类 (小组学生举手作答与老师提问相结合,注重从最后一名学生开始抓起) ①、立即数寻址:②、直接寻址方式 ③、寄存器寻址 ④、寄存器间接寻址: 例如:MOV A ,3AH ;(3AH )→A 目的操作数( ),源操作数( ),寻址方式( ) MOV A ,#3AH ;3AH →A 目的操作数( ),源操作数( ),寻址方式( ) MOV DPTR ,#2000H ;2000H →DPTR ;DPH=20H ;DPL=00H 目的操作数( ),源操作数( ),寻址方式( ) MOV A ,3AH ;(3AH) →A 目的操作数( ),源操作数( ),寻址方式( ) MOV A ,P1;P1口→A 目的操作数( ),源操作数( ),寻址方式( ) MOV A ,R0;R0→A 目的操作数( ),源操作数( ),寻址方式( ) MOV P1,A ;A →P1口 目的操作数( ),源操作数( ),寻址方式( ) ADD A ,R0;A+R0→A 目的操作数( ),源操作数( ),寻址方式( ) 65H 47H R0 A 47H 数据存储器 地址 ┋ ┋ 65H ① ② 将片内RAM 65H 单元内容47H 送A

汇编实验报告一 熟悉7种寻址方式

电子信息工程学系实验报告——适用于计算机课程课程名称:IBM-PC汇编语言程序设计 实验项目名称:熟悉7种寻址方式实验时间: 班级:姓名:学号: 一、实验目的: 掌握debug命令,熟悉7种寻址方式。 二、实验环境: ASM轻松汇编 三、实验内容: 1、上机输入以下程序: data segment x db 01,02 y db ?,? z db ?,? w dw 1234h data ends code segment main proc far assume cs:code,ds:data start: push ds xor ax,ax push ax mov ax,data mov ds,ax mov dx,1234h -----无有效地址 mov cl,ds:[0000h] -----0000h mov si,0000h mov di,0002h mov al,[si] ----0000h mov [di],al ----无有效地址 add si,1 add di,1 mov al,[si] mov [di],al mov si,0000h mov di,0000h mov al,x[si] mov y[di],al 成绩: 指导教师(签名):

add si,1 add di,1 mov al,x[si] -----0001h mov y[di],al mov si,0000h mov di,0000h mov bx,0000h mov bp,0004h mov al,[bx][si] ----0000h mov ds:[bp][di],al add si,1 add di,1 mov al,[bx][si] mov ds:[bp][di],al ret main endp code ends end start 2、写出上面汇编程序中字体为红色的指令的源操作数的寻址方式以及源操作数的有效地址。 指令寻址方式有效地址mov dx,1234h立即寻址方式无有效地址mov cl,ds:[0000h]直接寻址方式0000h mov al,[si]寄存器间接寻址方式0000h mov [di],al寄存器寻址方式无有效地址 mov al,x[si] 寄存器相对寻址方式0001h mov al,[bx][si]基址变址寻址方式0000h 画图说明数据段中变量所分配的存储空间及初始化的数据值。 14F2:0000 0001 0002 0003 0004 0005 0006 0007 01 02 01 02 00 00 34 12

实验2 指令系统、寻址方式及源程序结构

实验二指令系统、寻址方式及源程序结构 实验目的: 1. 熟悉8088/8086的数据传送和算术运算指令的书写格式、功能。 2. 熟悉各种寻址方式。 3. 掌握汇编语言源程序结构,熟悉常用伪指令,编写完整的源程序。 4. 掌握汇编、连接、运行汇编源程序的全过程;使用DEBUG调试和运行汇编源程序。实验内容: 安装MASM WINDOWS 集成实验环境 2011 在硬盘F中建立自己的文件夹,以“班级姓名”命名(比如计科1111张三),实验文件以“实验次数-序号”命名,比如sy2-1.asm。 1、验证指令格式 用A命令写入汇编指令,使用寄存器、段寄存器、存储器和立即数等作为操作数,验证mov、add指令的格式并得出结论。 2、理解不同的寻址方式 假设(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,请分析下列7条指令的源操作数各自使用何种寻址方式以及每条指令执行后AX的值。 然后使用Debug命令设置上述寄存器及存储单元的内容,再用汇编(A)、单步执行(T)等命令验证每条指令执行后AX的值。 (1)MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H] (4) MOV AX,[BX] (5) MOV AX,1100[BX] (6) MOV AX,[BX][SI] (7) MOV AX,1100[BX][SI] 3、编写源程序 假设有3个数x, ,y z,其中x=1234h,y=0c3f6h,z=10c5h,分别保存在内存单元X、Y、Z。请编写源程序,计算x+ 2z -y,结果保存在Z单元中,并用debug调试运行,查看每条指令的执行结果,观察标志位变化情况。其中X、Y、Z单元在数据段定义。 程序结构如下:

实验三(ARM编程环境的熟悉及寻址方式实验)

实验三ARM编程环境熟悉及寻址方式实验 注意:本实验在模拟环境下进行!! 一、实验目的: 1、进一步熟悉ARM的编程工具MDK; 2、深刻理解ARM汇编指令中标号的本质; 3、熟悉ARM寻址方式(寄存器寻址、寄存器间接寻址等); 二、实验步骤: 1、参照实验二的步骤,建立工程exp 2、设置工程、建立源文件 exp2.s并将其添加到工程,在exp2.s中输入如下代码(可复制):;广州大学华软软件学院 ;文件名:exp2.s ;功能: ;作者: ;日期: ;修改: area init,code,readonly entry ldr r0,=data1;将标号data1的值送给r0 ldr r1,=data2; ldr r2,=data3 ldr r0,[r0]

ldr r1,[r1] add r0,r0,r1 str r0,[r2] b .;相当于while(1) data1 dcd 12;定义一个字,初值为12 data2 dcd 13;定义一个字,初值为13 data3 dcd 0;定义一个字,初值为0 end 2、编译正确后调试(可参照实验二),注意Ro_Base设置为 0x30000000,点击下图菜单中的菜单项,调出内存单元观察窗口。

会弹出如下界面:

点击current,就会看到当前模式下的寄存器 按F10进行单步调试,同时观察寄存器中的变化; 反汇编界面: 出现如下界面:鼠标右键,如图选中,即可看到源代码的反汇编窗口。

我们发现data1代表的地址是0x30000020,data2代表的地址是0x30000024,data3代表的地址是0x30000028。好,我们现在通过memory窗口来查看这些内存单元的内容: 在存储单元窗口输入0x30000020(如下图所示),观察存储单元中的 值,是不是我们程序所运行的结果呢?

寻址方式

寻址方式:1.立即寻址:操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分于操作码一起存放在程序储存器中,可以立即得到并执行,不需要经过别的途径去寻找,在数前常冠以#作为前缀。2.寄存器寻址:在指令选定的某寄存器中存放或读取操作数3,寄存器间接寻址:由指令指出某一寄存器的内容,常有@前缀。4,直接寻址:指令中直接给出操作数所在的存储器地址。5,变址寻址:基址寄存器加变址寄存器间接寻址,MOVC A,@A+DPTR.6,相对寻址:以当前程序计数器PC值加上指令中给出的偏移量rel而构成实际操作数地址的寻址方法,它用于访问程序存储器,常出现在相对转移指令中。7,位寻址:在位操作指令中直接给出位操作数的地址可以对片内RAM中128个位和特殊功能寄存器SFR中的93个位进行寻址。 数据传送类指令:一、以累加器为目的操作数的指令 MOV A, Rn ; (Rn)→A,n=0~7 MOV A, @Ri ; ((Ri))→A,i=0,1 MOV A, direct ;(dir ect)→A MOV A, #data ; #data→A 二、以Rn为目的操作数的指令 MOV Rn, A ; (A)→Rn, n=0~7 MOV Rn, direct ;(direct)→Rn, n=0~7 MOV Rn, #data ; #data→Rn, n=0~7 三、以直接地址direct为目的操作数的指令 MOV direct, A ; (A)→direct MOV direct, Rn ;(Rn)→direct, n=0~7 MOV direct1, direct2; MOV direct, @Ri ;((Ri))→direct MOV direct, #data ; #data→direct 四、以寄存器间接地址为目的操作数的指令 MOV @Ri, A ;(A)→((Ri)),i=0,1 MOV @Ri, direct ;(direct)→((Ri)) MOV @Ri, #data ; #data→((Ri)) 五、16位数传送指令 MOV DPTR, #data16 ; #data16→DPTR 唯一的16位数据的传送指令, 立即数的高8位送入DPH, 立即数的低8位送入DPL。 六、堆栈操作指令 内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈,堆栈指针SP始终指向堆栈的 栈顶位置。 1、进栈指令 PUSH direct 先将栈指针SP加1,然后把direct中的内容送到SP指示的内部RAM单元中 2、出栈指令 POP direct SP指示的栈顶(内部RAM单元)内容送入direct字节单元 中,栈指针SP减1 七、累加器A与外部数据存储器传送指令 MOVX A, @DPTR ;((DPTR))→A,读外部RAM/IO

实验三 汇编数据寻址的方法

实验三汇编数据寻址的方法(2学时)实验目的 通过实验掌握下列知识: 1、DEBUG命令:G,N,W,L及Q。 2、8086系统中数据在内存中的存放方式和内存操作数的几种寻址方式。 3、8086指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。 4、8086汇编语言伪操作:BYTE PTR,WORD PTR。 5、求累加和程序和多字节加减法程序。 实验类型:验证 实验内容和步骤 一、内存操作数及各种寻址方式使用 程序内容: MOV AX,1234 MOV [1000],AX MOV BX,1002 MOV BYTE PTR[BX],20 MOV DL,39 INC BX MOV [BX],DL DEC DL MOV SI,3 MOV [BX+SI],DL MOV [BX+SI+1],DL MOV WORD PTR[BX+SI+2],2846 操作步骤 一、内存操作数及各种寻址方式使用 程序内容: MOV AX,1234 MOV [1000],AX MOV BX,1002 MOV BYTE PTR[BX],20 MOV DL,39 INC BX MOV [BX],DL

DEC DL MOV SI,3 MOV [BX+SI],DL MOV [BX+SI+1],DL MOV WORD PTR[BX+SI+2],2846 操作步骤 1)用A命令键入上述程序,并用T命令逐条运行。 2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。 注意D命令显示结果中右边的ASCII字符及双字节数存放法。 思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

第3章答案指令系统1-40

第3章指令系统 1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。1、指令:CPU根据人的意图来执行某种操作的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的程序语言 高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言 2,什么是计算机的指令和指令系统? 2、见第1题。 3,简述89C51汇编指令格式。 3、操作码[目的操作数] [,源操作数] 4,简述89C51寻址方式和所能涉及的寻址空间。 5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式? 5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址 6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 6、MOV A,40H ;直接寻址(40H)→A MOV R0,A ;寄存器寻址(A)→R0 MOV P1,#0F0H ;立即数寻址0F0→P1

MOV @R0,30H ;直接寻址(30H)→(R0) MOV DPTR,#3848H ;立即数寻址3848H→DPTR MOV 40H,38H ;直接寻址(38H)→40H MOV R0,30H ;直接寻址(30H)→R0 MOV P0,R0 ;寄存器寻址(R0 )→P0 MOV 18H,#30H ;立即数寻址30H→18H MOV A,@R0 ;寄存器间接寻址((R0)) →A MOV P2,P1 ;直接寻址(P1)→P2 最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元 7,对89C51片内RAM的高128字节的地址空间寻址要注意什么 7、用直接寻址,位寻址,寄存器寻址 8,指出下列指令的本质区别。 8,MOV A,DATA ;直接寻址2字节1周期 MOV A,#DATA ;立即数寻址2字节1周期 MOV DATA1,DATA2 ;直接寻址3字节2周期 MOV 74H,#78H ;立即数寻址3字节2周期 如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A 9,设R0内容为32H, A的内容为48H, 片内RAM的32H单元内容为80H, 40H单元内容为08H, 请指出在执行下列程序段后上述各单元内容的变化。 9、 MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0 最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H 10,如何访问SFR,可使用哪些寻址方式? 10、用直接寻址,位寻址,寄存器寻址 11,如何访问片外RAM,可使用哪些寻址方式? 11、只能采用寄存器间接寻址(用MOVX指令) 12,如何访问片内RAM,可使用哪些寻址方式? 12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13,如何访问片内外程序存储器,可使用哪些寻址方式? 13、采用变址寻址(用MOVC指令)

8086 CPU寻址方式

8086 CPU的七种基本的寻址方式 分别是:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址、相对基址加变址寻址 1. 立即寻址:操作数包含在指令中,是指令的一部分。此时的操作数称为立即数 MOV AX, 1234H 2. 寄存器寻址:操作数在CPU寄存器中,指令中指定寄存器编号 MOV SI, AX MOV AL, AH 3. 直接寻址:操作数在存储器中,指令直接包含操作数的有效地址。此时操作数一般存放在数据段DS中,采用换段前缀可以使用其它段寄存器。 MOV AX, [1234H] 4. 寄存器间接寻址:操作数在存储器中,操作数有效地址在SI、DI、BX、BP之一种。在不使用换段前缀的情况下,若有效地址在SI/DI/BX中,则以DS的值为段值;若有效地址在BP中,则以段寄存器SS的值为段值。 MOV AX, [SI] MOV [BP], CX 5. 寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)内容加上指令中给定的8位或16位位移量之和。即:EA = (BX/BP/SI/DI) + (8/16位位移量) 在不使用换段前缀的情况下,若SI/DI/BX的内容作为有效地址的一部分,则以DS的值为段值;若BP的内容作为有效地址的一部分,则以段寄存器SS的值为段值。 在指令中给定的8位或16位位移量以补码形式表示。在计算有效地址时,若位移量是8位,则将其有符号扩展为16位,当有效地址超过FFFFH,则对其进行64K取模。 例如:MOV AX, [DI+1223H] MOV BX, [BP-4] MOV ES:[BX+5], AL 注意:书写时基址或变址寄存器名一定要放在方括号中,而位移可以不写在方括号中。下面两条指令是等价的: MOV AX, [SI+3] 等价于MOV AX, 3[SI] 6. 基址加变址寻址:操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容相加得到。 EA = (BX/BP) + (SI/DI) 在不使用换段前缀的情况下,若BP的内容作为有效地址的一部分,则以SS的值为段值;否则以DS的值为段值。有效地址超过FFFFH,则对其进行64K取模。例如:MOV AX, [BX+DI] 等价形式MOV AX, [DI][BX] MOV AX, ES:[BX+SI] MOV DS:[BP+SI], AL

8086微型计算机原理与应用(吴宁)习题答案(第三章)

8086微型计算机原理与应用(吴宁)习题答案(第二章)第三章 3-3 (1) 源操作数为立即寻址方式;目的操作数为寄存器寻址方式 (2) 源操作数为基址寻址方式;目的操作数为寄存器寻址方式 EA=BX+DISP , PA= DS*16+EA (3) 源操作数为寄存器寻址方式;目的操作数为寄存器间接寻址方式 EA=SI , PA= DS*16+EA (4) 源操作数为基址加变址寻址方式;目的操作数为寄存器寻址方式 EA=BX+SI , PA= DS*16+EA (5) 源操作数为寄存器寻址方式;目的操作数为寄存器寻址方式 (6) 源操作数为基址寻址方式;目的操作数为寄存器寻址方式 EA=BX+10H , PA= DS*16+EA (7) 源操作数为寄存器间接寻址方式;目的操作数为寄存器寻址方式 EA=SI , PA= ES*16+EA (8) 源操作数为带位移量的基址加变址寻址方式;目的操作数为寄存器寻址方式 EA=BX+SI+20H , PA= DS*16+EA 3-7 (1)AX=3355H , SP=1FFEH (2) AX= 3355H , DX= 4466H , SP =1FFEH 3-8 BX= 4154H , [2F246H]= 6F30H 3-9 SI=0180H , DS = 2000H 3-10 求执行指令后的结果 (1) CL=F6H (2) [1E4F6H]=5678H (3) BX=0056H AX=1E40H (4) SI=00F6H , [SI]= [1E4F6H]= 0024H (5) AX=5678H [09226H]=1234H 3-12 (1) 端口580H 的内容为60H (2) 端口580H 的内容为60H, 端口581H 的内容为80H (3) 端口40H 的内容4FH 送至AL中 (4) 端口40H 的内容4FH 送至AL中, 端口41H 的内容送至AH中 (5) 端口45H 的内容为60H (6) 端口45H 的内容为60H, 端口46H 的内容为80H 3-13 (1) 寄存器间址 LEA SI, BLOCK ADD SI, 0AH MOV AX , [SI] (2) 基址寻址 LEA BX, BLOCK MOV AX, [BX+0AH]

实验一 指令与寻址方式认知实验(Keil)

实验一指令与寻址方式认知实验 一、实验目的 1.了解单片机基本指令及其寻址方式; 2.掌握在μVision环境中查看指令操作结果的技巧。 二、实验仪器和设备 Keil软件;THKSCM-2综合实验装置; 三、实验原理及实验内容 1.示例及相关设置 (1)建立一个文件夹:lx31。 (2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。 ORG 0000H MAIN:MOV R7,#16 MOV A,#00H MOV R0,#30H LP:MOV @R0,A INC R0 INC A DJNZ R7,LP SJMP $ END (3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。 (4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置: ○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。 ○2晶振频率设为11.0592MHz。 ○3Output标签下的Create HEX File前小框中要打钩。

○4在Debug标签选择Use Simulator(软件模拟)。 (5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。 (6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。 2.示例及相关设置 (1)建立一个文件夹:lx32。 (2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。 ORG 0000H MOV R0,#20H MOV R1,#22H MOV A,@R0 ADD A,@R1 MOV 24H,A INC R0 INC R1 MOV A,@R0 ADDC A,@R1 MOV 25H,A SJMP $ END (3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。 (4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置: ○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。 ○2晶振频率设为11.0592MHz。 ○3Output标签下的Create HEX File前小框中要打钩。 ○4在Debug标签选择Use Simulator(软件模拟)。

指令与寻址方式习题

指令与寻址方式习题解答 1.试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:(1)AND AX,0FFH (2)AND BL,[OFFH] (3)MOV DS,AX (4)CMP [SI],CX (5)MOV DS:[0FFH],CL (6)SUB [BP][SI],AH (7)ADC AX,0ABH[BX] (8)OR DX,-35[BX][DI] (9)PUSH DS (10)CMC 答:目的操作数源操作数 (1)寄存器直接寻址立即数寻址 (2)寄存器直接寻址直接寻址 (3)寄存器直接寻址寄存器直接寻址 (4)寄存器间接寻址寄存器直接寻址 (5)直接寻址寄存器直接寻址 (6)基址变址寻址寄存器直接寻址 (7)寄存器直接寻址寄存器相对寻址 (8)寄存器直接寻址基址变址相对寻址 (9)无寄存器直接寻址 (10)隐含寻址 2.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。 (1)MOV [BX][BP],AX (2)TEST [BP],BL (3)ADD SI,ABH (4)AND DH,DL (5)CMP CL,1234H (6)SHR [BX][DI],3 (7)NOT CX,AX (8)LEA DS,35[SI] (9)INC CX,1 (10)P USH 45[DI] 答:(1)应将BP,BX其中之一该为SI或DI (2)正确 (3)ABH改为0ABH (4) (5)是字操作,CL改为CX (6)移位数大于1时,应用CL (7)NOT指令只有一个操作数 (8)LEA指令的源操作数应为一内存单元地址

(9)此指令不用指出1 (10)45改为45H 3.下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态? MOV DL,86 ADD DL,0AAH 答: 0101,0110 + 1010,1010 = 1,0000,0000 CF=1 AF=1 ZF=1 SF=1 OF=1 4.在8086/8088CPU中可用于作地址指针的寄存器有哪些? 答:有BX,CX,DX,BP,SI,DI (IP,SP,) 5.已知(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何? (1)MOV CL,20H[BX][SI] (2)MOV [BP][DI],CX (3)LEA BX,20H[BX][SI] MOV AX,2[BX] (4)LDS SI,[BX][DI] MOV [SI],BX (5)XCHG CX,32H[BX] XCHG 20H[BX][SI],AX 答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H; (5) (09226H)=1234H,(AX)=5678H. 6.已知(SS)=09l 5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOV AX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。 答:(1)MOV AX,[BP] (2)MOV AX,[BP+DI+80H] (3)MOV AX,[DI+0100H] MOV AX,[SI+0220H] (4)MOV AX,[02C0H] 7.试按下列要求分别编制程序段: (1)把标志寄存器中符号位SF置‘1’。 (2)寄存器AL中高低四位互换。 (3)由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个数的负数。 (4)现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,实现(A)+(B)=>C。 (5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1形成奇数)。 答:(1)MOV AH, 80H SAHF

8086汇编各种寻址方式大全

各种寻址方式 1. 立即寻址:直接放在指令中的常数称为立即数,立即数只能是源操作数,立即数存放在指令操作码之后的存储单元中。 例:MOV AL,50H MOV DS, 1250H 错误 2. 寄存器寻址:存放在寄存器中的数据为操作数,寄存器操作数可以是源操作数,也可以是目的操作数。 例:MOV AL,BL MOV CL, BX 错误 以下寻址方式3~8,操作数都在存储器中。存储器操作数具有类型属性,如字节(BYTE)、字(WORD)、双字(DWORD)等,反映了数据占用存储单元的字节数,指令书写中,约定用方括号内容表示存储 器操作数的偏移地址;用类型名 PTR 偏移地址的形式说明指令中存储器操作数的类型,例:WORD PTR [1000H];用变量名DB/DW/DD数据序列的形式分别定义具有“变量名”的字节、字或双字存 储器操作数,如BUF DB 10H,20H。 3. 存储器寻址 (1)直接寻址:存储器操作数的16位偏移地址直接包含在指令的方括号中。 例:MOV AL,[1000H] 约定由DS提供段地址 MOV AL,CS:[1000H] ;段超越,由CS提供段地址 MOV AL,SS:[1000H] ;段超越,由SS提供段地址 例:MOV AX, [2000H] 如果(DS)= 3000H,则AX的物理首地址为:3000*10+2000 (2)寄存器间接寻址:操作数所在的存储单元的偏移地址放在指令给出的寄存器中。可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。其中,SI、DI、BX约定的段寄存器是DS,而BP约定的段寄存器SS。 例:MOV AX,[SI] ;AX←DS:[SI] MOV [BX],AX ;DS:[BX]←AX 例:MOV AX, [BX] 如果(DS)= 2000H, (BX)= 1000H, 则物理地址 = 20000H + 1000H = 21000H (3)寄存器相对寻址 这种寻址方式通过基址寄存器BX、BP或变址寄存器SI、DI与一个位移量相加形成有效地址,计算物理地址的缺省段仍然是SI、DI和BX为DS,BP为SS。 例:MOV AX, COUNT[SI](也可表示为MOV AX, [COUNT+SI]) 其中COUNT为16位位移量的符号地址。 如果(DS)= 3000H,(SI)= 2000H,COUNT = 3000H 则物理地址 = 30000H + 2000H + 3000H = 35000H (4)基址寻址:操作数的有效地址是指令给定的位移量(8位或16位)与BX、BP内容之和,段寄存器约定同寄存器间接寻址,允许段超越。 例:MOV AX,[BX+3AH] ;AX←DS:[BX+3AH] MOV [BP+4EB3H],AX;SS:[BP+4EB3H]←AX (5)变址寻址:操作数的有效地址是指令给定的位移量与寄存器SI或DI内容之和,段寄存器约定在DS 中,允许段超越。 例:MOV [DI+12H],AX ;DS:[DI+12H] ←AX

相关文档
相关文档 最新文档