微机原理实验 实验二 寻址方式
实验二寻址方式
一、实验目的
1、复习微机实验环境安装和环境配置
2、练习寻址方式、重点内存寻址方式
3、单步运行程序,通过观察窗口观察指令对寄存器中数据的影响
二、实验内容
程序是指令的集合。
指令就是计算机可以识别的命令
程序=数据结构+算法。
数据不能凭空产生和凭空存在,必须有其存在的硬件环境。
计算机硬件系统包括CPU、内存、系统总线、接口。
所以数据(操作数)只能存放在CPU、内存、接口中,产生几种寻址方式。
寻址方式是指寻找指令操作数所在地址的方式(为确定数据的来源和去处)。
四种寻址方式
a、立即数寻址:操作数代码中例如: mov bx,1234H
b、寄存器寻址:操作数在CPU中的某个寄存器例如: mov ax, bx
c、外设寻址:操作数在外设中(即接口电路中)例如: IN ax,23H
d、内存寻址:操作数在内存中。
例如: mov ax,[bx]
根据偏移地址求法内存寻址划分为5种:
●直接寻址:偏移地址在指令[ ]中可以看到。
●寄存器间接寻址:偏移地址在CPU寄存器中。
●寄存器相对寻址:偏移地址由CPU寄存器中数值和另外数值的叠加得到。
●基址变址寻址:偏移地址由CPU中基址寄存器(BX、BP)中的数值和变址寄存器(SI、
DI)中数值得到。
●相对基址变址寻址:偏移地址由CPU中基址寄存器BX、BP)中的数值和变址寄存器
(SI、DI)中数值得到。
举例说明
mov ax,[1234h] ;内存寻址方式中的直接寻址 (偏移地址在指令[ ]中可以看到)
mov ax,[bx] ;内存寻址方式中的寄存器间接寻址(偏移地址在CPU寄存器中)
mov ax,[bx+12H] ;内存寻址方式中的寄存器相对寻址
mov ax,[bx+si] ;内存寻址方式中的基址变址寻址
mov ax,[bx+si+12H];内存寻址方式中的相对基址变址寻址
三、实验步骤
1)完成微机实验环境配置
2)新建文件
a、选中菜单栏\文件\新建文件,建立空白文件
b、编辑文件,输入以下代码
data segment ;数据段开始
block1 dw 1234h,5678h,9abch,0def0h
data ends ;数据段结束end segment
code segment ;代码段开始
assume cs:code,ds:data ; 建立代码段寄存器和代码段段名的关系
main: ; 主程序的开始
mov ax,data
mov ds,ax ;初始化数据段段寄存器
mov bx,offset block1
mov si,2
mov ax,bx
mov ax,ds:[bx]
mov ax,ds:[bx+2]
mov ax,ds:[bx+si]
mov ax,ds:[bx+si+2]
mov ah,4ch ;程序结束,返回DOS
int 21h
code ends ;代码段结束 end of segment end main ;主程序结束
3)保存源程序
a、注意:保存源程序的文件名不能太长(包括路径);
b、注意:保存源程序的文件名的后缀为 .asm
4)编译和运行
选择菜单栏\项目\全部编译进行编译工作
选择菜单栏\执行\单步或F8快捷键或图标
5)观察窗口观察数据变化
运用DEBUG命令中的T命令观察单步执行时寄存器AX、BX、CX、DX的变化
四、完成思考题,调试成功后,请老师进行实验验收、打分
a、程序功能_________
b、练习其他寻址方式
c、写出每个寻址方式
五、本次实验出现问题、解决方法。
实验二 内存操作数及寻址方法1
实验二内存操作数及寻址方法一、实验目的:通过实验掌握下列知识:1、DEBUG命令:G,N,W,L及Q。
2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
3、8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。
4、8088汇编语言伪操作:BYTE PTR,WORD PTR。
5、求累加和程序和多字节加减法程序。
二、实验内容和步骤:1、内存操作数及各种寻址方式使用:MOV AX,1234 ;立即寻址MOV [1000],AX;直接寻址MOV BX,1002MOV BYTE PTR[BX],20;存在一个字节里MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DL 间接寻址MOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846;存在两个字节中步骤:1)输入程序:A 起始地址(默认100H);2)单步执行程序:采用T命令;3)查看结果:D 内存单元地址实验要求:每运行一条指令,检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。
2、求累加和程序:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADC AH,0INC BXJ: LOOP LOPINT 3步骤:1)输入程序:用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。
2)保存程序I)给文件命名: N ** ;将此程序命名为文件**(文件名可任取)。
II)存储程序长度值:采用BX:CX存储程序的长度值, BX 存储高位,CX存储地位程序长度值的计算:最后一条指令后面的地址减去起始地址采用修改寄存器命令:R BX 回车/输入数据R CX 回车/输入数据III)将起令行写入文件: W 起始地址;将此程序存到**命名的文件中。
微机原理寻址方式
微机原理寻址方式1、立即寻址(immediate addressing )双字节指令,第一个字节是操作码,第二个字节是操作数,操作数在指令中直接给出,故称为立即数。
在立即数前面必须加上前缀“#”。
如:MOV DPTR,#1234H1234H是立即数,指令功能是把16位立即数1234H送到数据指针DPTR中,如图。
注意:立即寻址只能用于源操作数。
MOV A,#12H (√)MOV DPTR,#1200H (√)MOV #1200H,DPTR (×)2、直接寻址(direct addressing)在指令中直接给出操作数单元的地址。
如:MOV A,3AH指令功能:把片内RAM中3AH单元内的数据传送给累加器A。
如图所示:直接寻址方式只能给出8位地址,限于片内RAM:(1)低128单元,在指令中直接以单元地址形式给出。
(2)特殊功能寄存器,在指令中直接以单元地址形式给出,还可以寄存器符号形式给出。
如:PUSH DPH==PUSH 83H。
直接寻址访问累加器A时,用ACC表示累加器,以便与寄存器寻址方式区别。
3、寄存器寻址(register addressing)在指令中将指定寄存器的内容作为操作数。
寄存器寻址方式中,用寄存器名表示寄存器。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄存器( A, B, DPTR,)。
如:INC R0指令功能:把寄存器R0的内容加1,再送回R0中。
4、寄存器间接寻址(register indirect addressing )在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。
在该寻址中,寄存器的名称前需加前缀“@”。
例如,指令MOV A,@R0指令功能:若R0寄存器的内容是3AH,指令的功能是以3AH为地址,将3AH地址单元的内容送到累加器A中。
如下图:寄存器间接寻址的寻址范围:(1)片内RAM的低128单元,只能采用R0或R1为间接寻址寄存器。
寻址方式实验
实验3 寻址方式实验一、实验目的1、熟练掌握DEBUG的常用命令。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
单步运行程序,通过观察窗口观察指令对寄存器中数据的影响二.实验要求:1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
2、本实验只要求在DEBUG调试程序状态下进行,包括调试程序和执行程序。
三、实验内容1、立即寻址:-t ;查看当前各寄存器数值,注意下一步地址指向AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0102 NV UP EI NG NZ NA PO NC1385:0102 0000 ADD [BX+SI],AL DS:0000=CD-a;1385:0100 mov ax,0110 ;源操作数为立即数寻址1385:0103-t=0100 ;单步执行,使下一步操作IP指针指向命令所在地址AX=0110 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0103 NV UP EI NG NZ NA PO NC1385:0103 0000 ADD [BX+SI],AL DS:0000=CD2、寄存器寻址-a1385:0103 mov ax,0100 ;目的操作数采用寄存器寻址,源操作数为立即数寻址1385:0106 mov bx,ax ;两个操作数均为寄存器寻址1385:0108-t ;观察ax内容发生改变AX=0100 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0106 NV UP EI NG NZ NA PO NC1385:0106 89C3 MOV BX,AX-t ;观察bx内容发生改变AX=0100 BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0108 NV UP EI NG NZ NA PO NC1385:0108 0000 ADD [BX+SI],AL DS:0100=B83、直接寻址-a1385:0108 mov ax,[2000]1385:010B-t ; 单步执行注意下一步地址指向,查看当前各寄存器数值,但是此处ax 没有变化AX=0000 BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=010B NV UP EI NG NZ NA PO NC1385:010B 0000 ADD [BX+SI],AL DS:0100=B8 -a1385:010B mov ax,[000a] ;重新输入直接寻址命令1385:010E-t=010B ;单步执行,使下一步操作IP指针指向想要运行命令所在地址AX=034F BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=010E NV UP EI NG NZ NA PO NC1385:010E 0000 ADD [BX+SI],AL DS:0100=B8;直接寻址成功,观察ax内容发生改变4、寄存器间接寻址-a1385:010E mov si,0100 ;设置si内容为01001385:0111 mov ax,[si] ;输入寄存器间接寻址命令1385:0113-t ; 单步执行,观察si内容已经改变AX=034F BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0100 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0111 NV UP EI NG NZ NA PO NC1385:0111 8B04 MOV AX,[SI] DS:0100=10B8 -t ; 单步执行,观察ax内容发生改变AX=10B8 BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0100 DI=0000DS=1385 ES=1385 SS=1385 CS=1385 IP=0113 NV UP EI NG NZ NA PO NC1385:0113 0000 ADD [BX+SI],AL DS:0200=005、寄存器相对寻址-a1385:0113 mov di,0110 ;设置di内容为01101385:0116 mov ax,[di+06] ;输入寄存器相对寻址命令1385:0119-t ; 单步执行,观察di内容已经改变AX=10B8 BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 IP=0116 NV UP EI NG NZ NA PO NC1385:0116 8B4506 MOV AX,[DI+06] DS:0116=458B -t ; 单步执行,观察ax内容发生改变AX=458B BX=0100 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 IP=0119 NV UP EI NG NZ NA PO NC1385:0119 0000 ADD [BX+SI],AL DS:0200=006、基址变址寻址-a1385:011B mov cx,0001 ;设置cx内容为00011385:011E mov ax,[cx+si] ;输入基址变址寻址命令,发生错误^ Error ;应该是地址超过ffffh导致1385:011E mov bp,0001 ;设置bp内容为00011385:0121 mov ax,[bp+di] ;重新输入基址变址寻址命令1385:0123-t=011B ; 单步执行,AX=0000 BX=0100 CX=0001 DX=0000 SP=FFEE BP=0000 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 IP=011E NV UP EI NG NZ NA PO NC1385:011E BD0100 MOV BP,0001-t ; 单步执行,观察di内容已经改变AX=0000 BX=0100 CX=0001 DX=0000 SP=FFEE BP=0001 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 I P=0121 NV UP EI NG NZ NA PO NC1385:0121 8B03 MOV AX,[BP+DI] SS:0111=048B -t ; 单步执行,基址变址寻址命令运行,ax内容改变AX=048B BX=0100 CX=0001 DX=0000 SP=FFEE BP=0001 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 IP=0123 NV UP EI NG NZ NA PO NC1385:0123 0000 ADD [BX+SI],AL DS:0200=007、相对基址变址寻址-a1385:0123 mov ax,[bp+di+01] ;输入相对基址变址寻址命令1385:0126-t ; 单步执行,相对基址变址寻址命令运行,ax内容改变AX=BF04 BX=0100 CX=0001 DX=0000 SP=FFEE BP=0001 SI=0100 DI=0110DS=1385 ES=1385 SS=1385 CS=1385 IP=0126 NV UP EI NG NZ NA PO NC1385:0126 0000 ADD [BX+SI],AL DS:0200=008、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
微机原理-实训-寻址方式
suogr@ 教学群号:31696867教9楼C506实验室西北师范大学计算机科学与工程学院 微机原理及汇编寻址方式索国瑞2014春选课班实训题目2014年3月24日星期一2西北师大计算机学院索国瑞:suogr @ 实训目的⏹初步了解指令的转移寻址方式⏹初步了解操作数的寻址方式⏹体验8086CPU 的物理地址和有效地址计算过程⏹进一步学习观察计算机运行状况⏹进一步学习分析计算机运行情况2014年3月24日星期一3西北师大计算机学院索国瑞:suogr @ 知识准备⏹寻址方式:就是确定操作对象的方式⏹ 依据操作对象的不同性质,寻址方式可分为: 与数据有关的寻址方式 与转移有关的寻址方式 隐含寻址⏹一般计算机系统中数据来源主要有以下四项 立即数:操作数在指令中 寄存器:操作数保存在寄存器中存储器:操作数保存在存储器中,一般就指内存 端口: 操作数在端口2014年3月24日星期一4西北师大计算机学院索国瑞:suogr @ 立即寻址⏹操作数作为立即数直接包含在指令中,紧跟在操作码之后与其一起存放在代码段区域。
取指令时与操作码一起被取入CPU的指令队列,不需要在指令执行时再访问存储器⏹例如 MOV AX, 1234H指令中的1234H就是立即数,其所对应的寻址方式就是立即寻址方式⏹立即数不能作为目的操作数使用,只能作为源操作数。
⏹8086指令系统中超过8位的立即数在存放时也遵循“低前高后”原则。
2014年3月24日星期一5西北师大计算机学院索国瑞:suogr @ 立即寻址例程分析⏹设有如下代码 MOV AL, 99H MOV BX, 1234H MOV CX, 5678H⏹这三条指令的源操作数都是立即数,都是立即寻址方式。
区别在于第一条指令的立即数是8位字节类型,而后两条指令的立即数都是16位字类型。
存储在内存中时要注意按照“低前高后”规则去理解⏹8086 CPU 指示将要执行的下一条指令的寄存器是CS 和IP ,前者提供段基址,后者提供段内偏移。
微机原理与接口技术-03-寻址方式
(5)寄存器相对寻址(Register
使用16位Disp访问一维数组
char A[n];
Relative Addressing)
00000 CS:0000 CS:xxxx 代码 … Opcode 10000111 00 20 数据 … … …
FFFFF
…
Main(void) { int i; … for (i=0; i<n; i++) { A[i] = …; } … }
… …
(2)寄存器寻址(Register Addressing)
操作数在寄存器中,指令中指明寄存器号,这种寻址方式称 为寄存器寻址。
数据在哪里?
CPU里(Reg)
特点:
速度快:操作数在寄存器中,不需要 访问存储器来取得操作数,操作在CPU 的内部进行,因而执行速度快。 省空间:寄存器号比内存地址短
MOV AX, 3064H
1. 指令的基本概念
3) 指令应提供的信息 做什么操作 源操作数从哪里来 操作结果放在哪里
1. 指令的基本概念
4) 指令的构成
操作码字段(Opcode Field)
--标明计算机要执行什么操作
操作数字段(Operand Field)
--指出指令在执行过程中所需要的操作数(值为多少 或 者放在什么地方),以及操作结果送到哪里
5. 8086寻址方式详解
(1)立即寻址(Immediate Addressing)
指令中直接给出操作数,操作数紧跟在操作码之后,作为指 令的一部分存放在代码段里,在取出指令的同时也就取出了 操作数,立即有操作数可用,所以称之为立即寻址。 数据在哪里?
微机原理寻址方式
微机原理寻址方式
一、直接寻址
直接寻址是指微处理器从指令队列直接检索出一个指令,而另一种方法是间接寻址。
在直接寻址中,指令的参数是指令中内置的,指令的地址也是内置的。
这意味着,如果需要加载参数或者变更指令的地址,需要在另外的单元中完成。
因此,直接寻址是最简单易用的一种寻址方式,只要执行指令即可,不需要进行其他的复杂计算。
在微机原理中,直接寻址的一些指令如下:MOV,XCHG,JMP,CALL,RET等。
二、间接寻址
间接寻址是指微处理器从指令队列检索出的指令中,指令的参数可以在指令本身外面的处显示,而指令的地址可以在指令本身内部显示。
这意味着,在间接寻址中,需要计算参数和指令的地址,以便执行指令。
在微机原理中,一些间接寻址指令是:MOV[BX],M[BX]等。
三、基址寻址
基址寻址是一种特殊的间接寻址。
这种形式的寻址方式用于将一切基本操作符(包括引用操作数,存取操作码及一些常数)映射到一个寻址空间中。
这种寻址方式在微机原理中很常见,例如:MOVAL,[BX+SI],MOV[BX+SI],AL等。
四、索引寻址
索引寻址是一种特殊的间接寻址,这种寻址方式允许微处理器以索引(例如指令中的一些寄存器)来定位操作数。
实验二、 寻址方式与运算指令实验
实验二、寻址方式与运算指令实验
一、实验目的
1、掌握与数据有关的寻址方式,进一步加深对存储器组织的认识;
2、掌握算术与逻辑运算指令,掌握运算指令对主要标志位的影响;
3、掌握在Turbo Debugger的CPU视图中查看内存数据的不同方法。
二、实验要求
1、运行Turbo Debugger,学习在Watches窗口中添加对寄存器和指定内存单元的监视;
2、汇编指令,将AX,BX和CL,DL的内容分别加入数据段偏移地址120H,122H
字单元和130H,131H字节单元。
将指令执行结果和各标志位的值与手工计算结果
作比较(不得用零值进行运算);
3、验证8条逻辑和移位指令;
4、编写指令序列,并在TD中实现:数据段210H和220H双字存储单元无符号数作加
法运算,结果存入230H双字单元;
5、编写指令序列,并在TD中实现:设16位带符号数变量X,Y,Z,W的存储地址
是数据段内的300H,302H,304H和310H,初值为20,4000,333,0。
请在TD
中实现运算(X - Y)/Z,商存入W;
三、实验内容
四、实验小结(可选)。
微机原理03-2 寻址方式
16
MOV指令演示
微机原理及应用C
任课:肖洁
17
3.2.1 立即寻址
1)定义:操作数部分是参加操作的数本身 2)特点:速度快 3)作用:
P100
给寄存器和存储单元赋值(以常量形式出现) 4)操作数(立即数imm) 8位数值或16位数值,16位的立即数是高位字节 放在高地址,低位字节放在低地址。 5)举例: MOV AX,0102H;AX←0102H MOV AL,34H ;AL←34H
存器使用DS,当指定寄存器是BP时,段寄存器使用SS。
2)这种寻址方式也允许使用段超越前缀,如:
MOV DH, ES:ARRAY[SI]
微机原理及应用C 任课:肖洁
39
3.2.5 寄存器相对寻址
格式:
或 或 或 或 或
MOV MOV MOV MOV MOV MOV
AX,COUNT [BP] AX,[BP] COUNT AX,[COUNT+BP] AX,[BP +COUNT] AX,COUNT+[BP] AX,[BP]+COUNT
P95
存放运算数据或结 参加运算的数据或 操作码 果的地址 , 数据的地址 目标操作数 源操作数
操作码部分:
指令要作的操作,如加法、传送等;操作码规定操 作类型,必不可少的部分。 操作数部分: 指令要处理的数据(或者是操作数的地址)。
微机原理及应用C 任课:肖洁
4
3.1.1 指令的基本构成
无操作数指令:没有操作数
微 机 原 理 及 应 用 C 第3章 8086/8088指令系统
主 讲: 肖 洁 Tel: 3301352 Email: freexiao003@
微机原理实验: 数据传送
实验二数据传送一、实验目的1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用Emulator仿真器来调试汇编语言程序。
二、实验预习要求1.复习8086指令系统中的数据传送类指令和8086的寻址方式。
2.按照题目要求预先编写好实验中的程序段。
三、实验任务1.通过下述程序段的输入和执行来熟悉Emulator仿真器的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV DS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1) MOV [BX],[SI](2) MOV AH,BX(3) MOV AX,[SI][DI](4) MOV BYTE PTR[BX],2000H(5) MOV CS,AX(6) MOV DS,2000H4.①编写程序设置各寄存器及存储单元为如下内容:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH②根据①中设置说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1) MOV AX,1200H(2) MOV AX,BX(3) MOV AX,[0120H](4) MOV AX,[BX](5) MOV AX,0110H[BX](6) MOV AX,[BX][SI](7) MOV AX,0110H[BX][SI]5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
微机原理实验 8086CPU系统寻址方式和汇编语言程序设计
微机原理实验报告实验一 8086CPU系统寻址方式和汇编语言程序设计一、实验目的1. 掌握 8086CPU 系统的逻辑地址和寻址方式;2. 掌握 8086CPU 系统中机器数的表示方式;3. 掌握指令的机器码表示方法;4. 掌握 TPC-USB 集成开发环境程序设计和调试方法;5. 掌握汇编语言实现具体算法的方式,区分汇编语言与高级语言的编程风格二、实验内容1. 写出在 TPC-USB 环境下汇编语言程序设计步骤;①点击工具栏中“新建”按钮,在编辑框输入程序代码,保存为一个以“.asm”结尾的汇编源文件。
②点击工具栏“编译+链接”按钮,若程序有错则返回修改代码,若没有错误,则编译链接成功,形成两个以“.obj”结尾的目标文件和以“.exe”结尾的可执行文件。
③点击工具栏“调试”按钮,在弹出的框中选择“Continue and don’t ask again”,执行“连续运行”或“单步运行”或“跳过”,在执行此步骤前可设置断点。
通过寄存器窗口、反汇编窗口、内存窗口查看相应内容。
2. 汇编语言程序设计和调试实验1)源程序:CODE SEGMENTASSUME CS:CODESTART:MOV AX,8086HMOV BX,6808HADD AX,BXMOV CX,AXPUSH CXPOP DXL1:JMP L1CODE ENDSEND START2)反汇编结果:3)单步执行每条指令后对应寄存器的变化值:START:MOV AX,8086H ; AX:0×00000FE6 ——>0×00008086IP: 0×00000000 ——>0×00000003MOV BX,6808H ;BX: 0×000008FEA——>0×00006808IP: 0×00000003 ——>0×00000006ADD AX,BX ; AX:0×00008086 ——>0×0000E88EIP: 0×00000006 ——>0×00000008FLAGS: 0×00007202——>0×00007286MOV CX,AX ; C X: 0×000C0000 ——>0×000CE88EIP: 0×00000008 ——>0×00000000PUSH CX ; SP:0×0000FFFE ——>0×0000FFFCIP: 0×00000000 ——>0×0000000BPOP DX ; SP:0×0000FFFC ——>0×0000FFFED X: 0×00002002 ——>0×0000E88EIP: 0×0000000B ——>0×0000000C3. 编程设计实验(一)内存中现有 X 和 Y 两个存储单元,分别存有 42 和-43,利用汇编语言编程计算这两个数之和,并将结果放入 SUM 单元;1) 程序流程图:开始X=42Y=-43将数据段DATA的首地址送到DSAL=XAL=AL+YSUM=AL结束2)源程序:DATA SEGMENTX DB42Y DB -43SUM DB ? ;?用来占位DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;DATA的数据送到DSMOV AL,XADD AL,YMOV SUM,ALLOOP:JMP LOOPCODE ENDSEND START3)内存结果(DS)4)反汇编结果:4. 编程设计实验(二)数据段中的一个存储单元 X 中存放的数据为 10H,编程实现将该存储单元中的数据循环左移四位后存放到数据段的另一个存储单元 Y 中。
