实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作

(验证性)

1、实验目的:

(1)掌握常用DEBUG命令: G,D,R,T,U,Q。

(2)掌握工具软件EMU8086。

(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

(4)掌握简单的数值转换算法

2、实验说明:

计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。

3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数

4、参考程序:

; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元

DATA SEGMENT; 数据段

RESULT_1 DB 1

RESULT_2 DB 1

RESULT_3 DB 1

DATA ENDS

STACK SEGMENT STACK ; 堆栈段

STA DB 64 DUP(0)

STACK_TOP DB 0

STACK ENDS

CODE SEGMENT; 代码段

ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK

START:

MOV AX, DATA

MOV DS, AX ; 设置数据段

MOV AX, STACK

MOV SS, AX ; 设置堆栈段

LEA SP, STACK_TOP ; 设置栈顶指针

MOV AX, 2afH

MOV CL, 100

DIV CL

MOV RESULT_1, AL ; 除以100, 得百位数

MOV AL, AH

MOV AH, 0

MOV CL, 10

DIV CL

MOV RESULT_2, AL ; 余数除以10, 得十位数

MOV RESULT_3, AH ; 余数为个位数

MOV AX,4C00H ; 返回DOS

INT 21H ;

CODE ENDS

END START ; 最后一行要按回车键

5、实验及报告要求:

1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的

伪指令和指令;

2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环

境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。

3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段

地址(CS=?,DS=?SS=?ES=?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的

主要依据。

5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法

和微机原理学习方法作出总结。

6、思考题:

1)用单步执行命令t运行程序,运行到mov ax, 4c00h,int 21h指令后,cs和

IP寄存器内容前后有何变化?产生变化的原因是什么?

2)试写出将BCD转换成二进制码的汇编程序。

【实验辅导资料】

1 汇编语言程序的上机过程

在计算机上运行汇编语言程序的步骤是:

1.用编辑程序建立ASM源文件;

2.用MASM程序把ASM文件转汇编成OBJ文件;

3.用LINK程序把OBJ文件转连接成EXE文件;

4.用DOS命令直接键入文件名就可执行该程序。

图1 汇编语言程序的建立及汇编过程

1.检查源程序;

2.测出源程序中的语法错误,并给出出错信息;

3.产生目标文件(.OBJ),并可给出列表文件(同时列出汇编语言源程序和

机器语言目标程序的文件,称之为.LST文件)和交叉索引文件(列出程序中使用的符号、变量和标号以及引用情况,称之为.CRF文件)。

4.展开宏指令。

1.1建立汇编语言的工作环境

为运行汇编语言程序至少要在磁盘上提供以下文件:

1.编辑程序,如EDIT.EXE

2.汇编程序,如MASM.EXE

3.连接程序,如LINK.EXE

4.调试程序,如https://www.360docs.net/doc/9419183561.html,

1.2 汇编语言源程序上机过程

1.建立汇编源程序ASM文件

2.汇编产生OBJ文件

3. 链接产生EXE文件

4. 程序的调试和执行

5. 生成EXE或COM文件

2 汇编语言程序格式

存储器的物理地址由段基址和偏移地址组合而成,任何一个逻辑段,无论是代码段,数据段,堆栈段,附加段都必须进行段定义,以便连接程序把不同段和模块连接成一个可执行程序。此外,还必须明确段和段寄存器之间的关系,这可使用段分配语句来完成。

1、段定义语句

4个逻辑段不一定全部要定义,通常代码段和数据段是必须的,附加段可以省略。但当代码段中使用了串指令,必须设置附加段作目标串基址用,附加段也可用来存放数据,增大数据段容量。

一般程序结构:

(1)代码段:存放程序执行的指令

(2)数据段:存放程序所需的数据

(3)堆栈段:存放程序执行的临时信息

数据段定义格式:

DATA SEGMENT ; 数据段

RESULT_1 DB 1

RESULT_2 DB 1

RESULT_3 DB 1

DATA ENDS

附加段的定义:

EXTRA SEGMENT

DEST_BUFFER DB 50 DUP (‘?’)

EXTRA ENDS

堆栈段的定义:

STACK SEGMENT STACK ; 堆栈段

STA DB 64 DUP(0)

STACK_TOP DB 0

STACK ENDS

2、段分配语句

在8086/8088系统中存储器采用分段结构,各段容量≦64K字节,用户可以设置多个逻辑段,但只允许4个逻辑段同时有效,段分配语句用来完成将逻辑段分别定义成代码段、数据段、堆栈段和附加段。

由于ASSUME伪指令只指定某个段分配给哪个段寄存器,并将代码段的段基址自动装入CS寄存器中,而不能自动把其它段基址装入相应的段寄存器中,所以在代码段的开始要有一段初始化程序完成这一工作。对堆栈段来说除了将段基址送入SS寄存器外,还要将栈顶偏移地址置入堆栈指示器SP中。

ASSUME CS:段名, DS:段名, ES:段名, SS:段名

(一)DOS下的汇编调试:

步骤

1 汇编调试所需的文件已拷贝在D:\MASM子目录下,它们是:

(1)用文本编辑软件UltraEdit 、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源文件的扩展各一定要是 ASM如: EXAMPLE.ASM

(2)MASM.EXE 宏汇编工具,把 ASM源文件生成OBJ目标文件,

(3)LINK.EXE 链接工具,把OBJ文件生成EXE文件

(4)https://www.360docs.net/doc/9419183561.html, 调试工具,可对程序进行调试,跟踪

2、进入 Windows XP 的命令行方式(在运行程序栏中输入command/cmd 并按回车键)或Windows ME 和 Windows 98 的 MS-DOS 方式 ( 在开始→程序→附件 MS-DOS 方式 )。

3、在 DOS 提示符下进行汇编、连接、动态调试等操作。

例如: 对源文件 EXAMPLE.ASM 进行的操作

D:\MASM\MASM EXAMPLE; 汇编源程序操作

D:\MASM\LINK EXAMPLE; 连接并生成扩展名为 .EXE 的可执行文件

D:\MASM\DEBUG EXAMPLE.EXE 对可执行文件进行调试

3、要求掌握的调试命令(在 DEBUG 中使用的命令)

a: U - 反汇编命令

用法: -U 代码段地址:起始偏移地址如:-U CS:100

b: D - 显示内存中的数据命令

用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20

c: T - 单步执行程序命令

用法: -T 要执行的指令条数如:-T 3

d: G - 连续执行程序命令

用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址

如: -G=CS:100 106

注意: 结束地址一定要是操作码的所在地址

e: R - 查看和修改寄存器数据命令

用法: -R 回车如:-R AX

f: F - 对内存单元填充数据命令

用法: -F 数据段地址:偏移首地址偏移未地址填入的数据

如: -F DS:100 120 ff

g: Q - 退出”DEBUG“应用程序命令

4、应用例子及操作步骤

将 AX 中的十六进制数拆为三个 BCD 码, 并存入 Result_1, Result_2, Result_3

的三个单元中。

DATA SEGMENT ; 数据段

RESULT_1 DB 1

RESULT_2 DB 1

RESULT_3 DB 1

DATA ENDS

STACK SEGMENT STACK ; 堆栈段

STA DB 64 DUP(0)

STACK_TOP DB 0

STACK ENDS

CODE SEGMENT ; 代码段

ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK

START:

; 程序开头必须要有的五条指令

MOV AX, DATA

MOV DS, AX ; 设置数据段

MOV AX, STACK

MOV SS, AX ; 设置堆栈段

LEA SP, STACK_TOP ; 设置栈顶指针

;---------------------------------------

; 程序的中间部分

MOV AX, 587

MOV CL, 100

DIV CL

MOV RESULT_1, AL ; 除以 100, 得百位数

MOV AL, AH

MOV AH, 0

MOV CL, 10

DIV CL

MOV RESULT_2, AL ; 余数除以 10, 得十位数

MOV RESULT_3, AH ; 余数为个位数

;------------------------------------------ ; 程序结束必须要有的两条指令

MOV AX, 4C00H ;

INT 21H ;

;------------------------------------------ CODE ENDS

END START ; 最后一行要按回车键

⑴、对源程序进行汇编产生OBJ文件--编译过程

D:\MASM>MASM EXAMPLE;

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

51514 + 408822 Bytes symbol space free

0 Warning Errors

0 Severe Errors

⑵、对目标文件进行连接产生EXE文件--连接过程

D:\MASM>LINK EXAMPLE;

Microsoft (R) 8086 Object Linker Version 3.05

Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.

⑶、对可执行文件进行调试 --调试过程

D:\MASM>DEBUG EXAMPLE.EXE

-U CS:0000 用反汇编命令“U 代码段地址:起始偏移地址”显示出程序的标识符

-U 0 2C

160D:0000 B80716 MOV AX,1607 ; 程序的起始地址是 160DH:0000H

160D:0003 8ED8 MOV DS,AX

160D:0005 B80816 MOV AX,1608

160D:0008 8ED0 MOV SS,AX

160D:000A 8D264100 LEA SP,[0041]

160D:000E B84B02 MOV AX,024B

160D:0011 B164 MOV CL,64

160D:0013 F6F1 DIV CL

160D:0015 A20000 MOV [0000],AL

160D:0018 8AC4 MOV AL,AH

160D:001A B400 MOV AH,00

160D:001C B10A MOV CL,0A

160D:001E F6F1 DIV CL

160D:0020 A20100 MOV [0001],AL

160D:0023 88260200 MOV [0002],AH

160D:0027 B8004C MOV AX,4C00 ; 程序的结束地址是 160DH:0027H

160D:002A CD21 INT 21

160D:002C 9E SAHF

-

执行程序前观察内存中的数据

-D DS:0000 ; 显示内存中的数据命令,命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据

-D DS:0 30

15F7:0000 CD 20 00 A0 00 9A F0 FE-1D F0 3C 03 5D 0F 77 03 . ........<.].w. 15F7:0010 5D 0F 04 03 5D 0F 4C 0F-01 01 01 00 02 FF FF FF ]...].L......... 15F7:0020 FF FF FF FF FF FF FF FF-FF FF FF FF E6 15 4C 01 ..............L. -

-G=CS:0000 0027 ;连续执行程序命令代码段地址:指令的起始偏移地址指令的结束偏移地址

AX=0708 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000

DS=1607 ES=15F7 SS=1608 CS=160D IP=0027 NV UP EI PL NZ NA PO NC

160D:0027 B8004C MOV AX,4C00

-

执行程序后观察内存中的数据(结果)

-D DS:0000 ; 用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据

-D DS:00 ; 观察内存中的数据

1607:0000 05 08 07 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1607:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1607:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ -

-R IP 修改IP寄存器中的数据

IP 0027 显示修改前的数据

:00 输入修改的数据

-

-T ;单步执行程序命令(执行一条指令)

AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000

DS=1607 ES=15F7 SS=1608 CS=160D IP=0003 NV UP EI PL NZ NA PO NC

160D:0003 8ED8 MOV DS,AX

-

-T3 ;执行3条指令

AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000

DS=1607 ES=15F7 SS=1608 CS=160D IP=0005 NV UP EI PL NZ NA PO NC

160D:0005 B80816 MOV AX,1608

AX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000

DS=1607 ES=15F7 SS=1608 CS=160D IP=0008 NV UP EI PL NZ NA PO NC

160D:0008 8ED0 MOV SS,AX

AX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000

DS=1607 ES=15F7 SS=1608 CS=160D IP=000E NV UP EI PL NZ NA PO NC

160D:000E B84B02 MOV AX,024B

-

-R ; 查看寄存器数据命令

AX=0302 BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000

DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC

129D:0028 B8004C MOV AX,4C00

-R AX ;查看和修改寄存器数据命令

AX 0302

:FFFF

-R ; 查看寄存器数据命令

AX=FFFF BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000

DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC

129D:0028 B8004C MOV AX,4C00

-

-F 数据段地址:偏移首地址偏移未地址填入的数据

-F DS:0000 0030 DF ; 对内存单元填充数据

-D DS:00 ; 观察内存中的数据

1607:0000 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................ 1607:0010 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................ 1607:0020 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................

1607:0030 DF A2 01 00 88 26 02 00-B8 00 4C CD 21 0B A1 D6 .....&....L.!... 1607:0040 5D 48 50 E8 85 0C 83 C4-02 C6 14 00 00 00 28 00 ]HP...........(. -

-Q ; 退出“DEBUG”应用程序命令

D:\MASM_8088\MASM>

附标志位注解

D7--OF(OV/NV):Overflow 溢出标志位

D6-- DF(DN/UP):Direction Flag(Down/UP) 方向标志位

D5--IF(EI/DI):Enable Interupt/Disable ~ 允许中断标志位

D4--SF(NG/PL):Sign Flag (Negative/Positive) 符号标志位

D3--ZF(ZR/NZ):Zero Flag 零标志位

D2--AF(AC/NA):Auxiliary 辅助进位标志位

D1--PF(PE/PO):Parity of Even/~ Odd 奇偶标志位

D0--CF(CY/NC):Carry 进位标志位

溢出OV(溢出)NV(未溢出)

零位ZF(等于零)NZ(不等于零)

方向DN(减少)UP(增加)

辅助进位AC(进位)NA(无进位)

中断EI(许可)DI(禁止)

奇偶标志PE(偶)PO(奇)

符号NG(负)PL(正)

进位 CY(进位) NC(无进位)

(二)Windows下的汇编调试

1.使用 Emu8086 软仿真软件来调试 8086汇编语言程序

(1)、点击Open 打开文件,装入Example.asm源程序;

⑹、选择另存为https://www.360docs.net/doc/9419183561.html, 格式;

⑺、选择run 进入程序的软仿真;

⑻、点击View选择Variables 观察数据段的变量

汇编语言实验一

实验一查看CPU和内存,用机器指令和汇编指令编程 一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容: 1. 预备知识:Debug的使用 (1) 什么是Debug? Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。 (2) 我们用到的Debug功能 ●用Debug的R命令查看、改变CPU寄存器的内容; ●用Debug的D命令查看内存中的内容; ●用Debug的E命令改写内存中的内容; ●用Debug的U命令将内存中的机器指令翻译成汇编指令; ●用Debug的T命令执行一条机器指令; ●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。 (3) 进入Debug Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。用以下方式可以进入DOS: ①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。 ②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。 (4) 用R命令查看、改变CPU寄存器的内容 1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R 2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名 若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后按Enter键,将出现“:”作为输入提示,在后面输入要写入的数据后按Enter 键,即完成了对AX中内容的修改。若想看一下修改的结果,可再用R命令查看 (5) 用Debug的D命令查看内存中的内容 1)格式:-d 段地址:偏移地址,Debug将列出从指定内存单元开始的128个内存单元的内容。 使用D命令,Debug将输出3部分内容,如图2.34所示。 中间是部分从指定地址开始的128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。 左边是每行的起始地址。 右边是每个内存单元中的数据对应的可显示的ASCII码字符。 2)格式:-d 段地址:起始偏移地址结尾偏移地址,Debug将列出指定范围的内存单元的内容。 (6) 用Debug的E命令改写内存中的内容,有两种格式: 1)格式:-e 起始地址数据数据数据……,如要将1000:0开始的10个内存单元修改为0~9,可以用”-e 1000:0 0 1 2 3 4 5 6 7 8 9”

实验一 熟悉汇编程序调试步骤

实验一汇编语言环境 一、实验目的 1.熟悉汇编语言的上机环境,学习EDIT,MASM,LINK程序的使用,掌握建立、汇编、链接、运行汇编语言程序的过程。 2.熟悉DEBUG有关命令的使用方法。 二、实验原理 建立、汇编、链接、运行汇编语言程序的过程方法。 三、主要仪器及耗材 计算机、MASM软件包。 四、实验内容与步骤 内容: 1.输入、编辑汇编语言程序。 2.对汇编语言程序进行汇编、连接和运行。 步骤: 1.在DOS提示符下,进入MASM目录。 2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。 1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no1.asm,进入编辑窗口 code segment assume cs:code start: mov ah,08h int 21h mov ah,4ch int 21h code ends end start 编辑完后,何在退出edit窗口 2) 用汇编程序masm对源程序汇编产生目标文件obj。例: masm no1 不断修改错误,直至汇编通过为止,产生no1.obj。 3) 用连接程序link产生执行文件exe.例:link no1 4) 执行程序:可直接从DOS执行程序,即在DOS环境中,输入文件名no1即可。 再次熟悉汇编连接,运行过程。 1.在DOS提示符下,进入MASM目录。 2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行

汇编、连接和运行。 1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no2.asm,进入编辑窗口 DATAS SEGMENT buf db 'I am a student!$' ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT db 200 dup(0);此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX lea dx,buf mov ah,9 int 21h ;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START编辑完后,何在退出edit窗口 2) 用汇编程序masm对源程序汇编产生目标文件obj。例: masm no2 不断修改错误,直至汇编通过为止,产生no2.obj。 3) 用连接程序link产生执行文件exe.例:link no2 4) 执行程序 可直接从DOS执行程序,即在DOS环境中,输入文件名no2即可。

汇编语言上机操作及程序调试的方法

汇编语言上机操作及程序调试的方法第一节在IBM-PC机上运行汇编源程序所必备的软件 为了在IBM-PC机上运行汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列文件: EDIT 文件编辑程序 MASM 宏汇编程序 CREF 交叉引用文件处理程序 LINK 链接程序 LIB 库管理程序 DEBUG 调试程序 第二节在IBM-PC机上运行汇编源程序的步骤 当用户编制好汇编语言源程序之后,要在机器上运行,必须经过以下几个步骤: 1.用EDIT命令建立与修改汇编源程序文件(ASM文件) 源程序就是用汇编语言的语句编写的程序,它不能被机器识别。源程序必须以ASM为附加文件名。至于EDIT的使用方法可以查阅手册。 2.用MASM命令汇编源文件以产生相应的目标文件(OBJ文件)源程序建立以后,必须经过汇编,转换成用二进制代码表示的目标文件,机器才可运行。汇编是通过调用PC—DOS下的宏汇编程序MASM实现的。汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。 3.用LINK命令连接目标文件以产生可执行文件(EXE文件)由于汇编之后所得到的目标代码的存放地址并不是可执行的绝对地址,而是浮动的相对地址,因而,必须经过连接,把程序的各个模块连接在一起,或把要调用的子程序与主程序连接在一起,把相对地址变成绝对地址,形成可执行的文件。连接是由调用PC—DOS下的LINK程序来实现的。 4.调试、运行可执行文件。 经过以上过程,在盘上有了可执行文件,则可在DOS提示符下,直接打入文件名(不用扩展名),就可以把执行文件从盘上装入内存,且立即执行此程序。

汇编语言上机步骤与DEBUG常用命令的使用

、实验一汇编语言上机步骤与DEBUG常用命令的使用 【实验目的】 (1)汇编语言源程序的编辑、汇编、连接的方法 (2)掌握DEBUG常用命令的使用,如汇编命令A、反汇编命令U,查看寄存器命令R,查看内存单元命令D,修改内存单元命令E,填充内存单元命令F,设断点热行命令G及单步执行命令T等; (3)掌握用断点执行或单步执行来检查和调式程序的方法; (4)进一步了解8086/8088CPU内部寄存器的功能; (5)掌握访问段式存储器结构地址的表示方法 【实验类型】验证型实验 【实验内容及要求】 1、编辑源程序:将课本102页的代码输入到计算机,并保存(源程序可以不用写到实验报告上) 2、对源程序进行汇编,生成目标文件,写出相应的命令 3、对目标文件进行连接,生成可执行文件,写出相应的命令 4、用DEBUG程序调试生成的可执行文件:按以下要求完成 ⑴用反汇编U命令显示程序及目标码,把结果写在实验报告上。 ⑵用R命令查看各寄存器的情况,把结果写在实验报告上。 ⑶写出第四条指令的逻辑地址,段地址及偏移地址。 ⑷用单步命令T或断点命令G执行程序到RET处,并写出用T命令执行头5条指令的过程及G命令的执行过程。 ⑸写出用D命令检查程序执行前后x,y,z的内容。 ⑹用E命令修改数据段中某一存储单元的内容。 DEBUG常用命令 分类命令格式功能说明 汇编与反汇编-A[地址] 从指定地址开始汇编程序地址默认值为: CS:IP -U[地址] 从指定地址开始反汇编32字节目标码 -U 起始地址 终止地址 在指定地址范围内反汇编目标码 运行与跟踪-G=起始地 址][断点1…断 点10] 在指定地址开始执行到断点为止地址默认值为: CS:IP -T[=地址] 在指定地址执行一条指令后暂停 -T[=地址]n 在指定地址执行n条指令后暂停 存储单元读写移动比较与搜索-D[地址] 从指定地址开始显示80H字节存储单元 内容 地址默认值为: CS:IP -D起始地址终 止地址 显示指定地址范围内存储单元内容 -E地址修改内 容 从指定地址开始逐个单元修改存储内 容 -S起始地址终止地址被 查字符串 从指定地址范围内查找字 符串 段地址默认值 为DS

汇编语言上机实验指导

汇编语言上机实验指导 实验一汇编语言基本指令操作练习 一、实验目的: 1、掌握8086/8088基本指令的使用方法和功能。 2、初步了解汇编语言程序设计的基本结构和利用DEBUG调试 程序的方法。 3、进一步熟悉汇编语言的上机过程。 二、上机实验指导: (一)利用DEBUG的A命令输入指令,做如下实验。 1、比较下面指令的区别: ①MOVAX,2000H②MOVBX,[2000H] -D2*******;显示字存储单元DS:2000的内容 3ADC:20005A58ZX -R;显示指令执行前AX,BX的内容 AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0100NVUPEIPLNZNAPONC 3ADC:0100858CFFF3TESTCX,[SI+F3FF]DS:F3FF=74C0 -A;利用A命令输入汇编指令 3ADC:0100MOVAX,2000 3ADC:0103MOVBX,[2000] 3ADC:0107INT3;此中断为断点中断,使程序执行暂停 3ADC:0108 -G;不指定地址,从当前CS:IP处执行 AX=2000BX=585ACX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=3ADCES=3ADCSS=3ADCCS=3ADCIP=0107NVUPEIPLNZNAPONC 3ADC:0107CCINT3;指令执行后,AX=2000H,BX=585AH 2、以寄存器BX作为地址指针,从BX所指的存储单元开始起,连续存放着 两个无符号数(字操作数),编程求它们的和,并将结果存放在这两个数 之后。 -RBX;显示BX寄存器中的内容(BX=0000h) BX0000 :;回车 -D0*******;显示DS:0000到DS:0005的内容(BX所指的三个 字操作数),如BX不为0000H,自己修改范围。3A6B:0000CD20FF9F009A..... ;三个字操作数依次为20CDH,9FFFH,9A00H -A;输入指令 3A6B:0100MOVAX,[BX] 3A6B:0102INCBX 3A6B:0103INCBX 3A6B:0104ADDAX,[BX] 3A6B:0106INCBX

汇编语言上机环境及基本操作

汇编语言上机环境及基本操作汇编语言是一种低级语言,它直接面向硬件,可以直接访问计算机的底层资源。为了学习和实践汇编语言,我们需要了解如何搭建汇编语言上机环境以及其基本操作。本文将介绍汇编语言上机环境的安装和基本操作的步骤,并给出一些示例。 1. 汇编语言上机环境的安装 在搭建汇编语言的上机环境之前,我们首先需要确认计算机的操作系统。通常,我们可以在Windows操作系统上进行汇编语言的开发和调试。下面是汇编语言上机环境的安装步骤: 1.1 下载汇编语言开发工具 汇编语言开发工具有很多种,比如MASM、NASM等。根据个人的喜好和需求选择合适的工具进行下载。 1.2 安装汇编语言开发工具 双击下载文件并按照提示完成安装过程。一般来说,安装过程中可使用默认配置,无需特殊设置。 1.3 配置环境变量 配置环境变量可以使得我们在任意路径下都可以运行汇编语言代码。找到系统环境变量中的"Path"变量,添加汇编语言开发工具的安装路径。例如,如果您选择了MASM,将其安装路径添加到"Path"变量中即可。

安装好汇编语言开发工具后,我们就可以开始进行汇编语言的实践了。 2. 汇编语言的基本操作 接下来我们将介绍汇编语言的一些基本操作,包括编写代码、汇编、链接和运行等。 2.1 编写汇编语言代码 打开一个文本编辑器(如记事本),编写汇编语言的代码。汇编语言与高级语言相比,语法更为底层,需要对计算机的底层结构有一定的了解。可以参考相关教材或者网络资源,编写简单的汇编语言代码。 2.2 汇编 将编写好的汇编语言代码保存为.asm文件。然后,打开命令提示符(或者使用汇编语言开发工具自带的命令行工具),进入.asm文件所在目录,并执行如下命令进行汇编: > asm 文件名.asm 汇编成功后,将生成相应的.obj文件。 2.3 链接 汇编语言代码中可能会引用一些外部的库文件,我们需要将这些库文件与生成的.obj文件进行链接。使用如下命令进行链接: > link 文件名.obj 文件名.lib

熟悉emu8086汇编语言调试环境实验报告

熟悉emu8086汇编语言调试环境实验报告 ======================= 1. 实验目的 ------- 本次实验的主要目的是熟悉并掌握emu8086汇编语言调试环境的使用,了解汇编语言的基本原理和编程方法,提升对计算机硬件和程序运行的理解。 2. 实验原理 ------- emu8086是一款用于学习和实验的8086微处理器模拟器。它提供了一个集成开发环境(IDE),可以在此环境中编写、编译、调试和运行8086汇编语言程序。 3. 实验步骤 ------- 以下是我们进行实验的具体步骤:

步骤一:安装emu8086模拟器。从官方网站下载并安装emu8086模拟器,确保正确安装并能够正常运行。 步骤二:打开模拟器并创建一个新项目。在模拟器的IDE中,选择“文件”->“新建”->“项目”,然后为项目命名并选择存储位置。 步骤三:编写汇编语言程序。在项目中创建一个新的汇编文件,使用8086汇编语言编写一个简单的程序。例如,可以编写一个程序来输出“Hello, World!”到屏幕上。 步骤四:编译程序。在模拟器的IDE中,选择“编译”->“编译全部”,将汇编文件编译成机器码。 步骤五:运行程序。在模拟器的IDE中,选择“运行”->“运行”,或者直接按下F9键,来运行程序。 步骤六:调试程序。如果程序运行出现问题,可以使用emu8086的调试功能来查找和修复错误。在模拟器的IDE中,选择“调试”->“开始调试”,然后使用调试工具来检查程序的状态、寄存器和内存。 4. 实验结果 -------

通过本次实验,我们成功地编写、编译、运行并调试了一个简单的8086汇编语言程序。我们实现了在屏幕上输出“Hello, World!”的目标,并且深入了解了emu8086模拟器的使用方法和8086汇编语言的编程技巧。 5. 实验分析 ------- 通过本次实验,我们深入了解了8086汇编语言的编程方法和计算机硬件的基本原理。我们学习了如何使用emu8086模拟器来编写、编译、运行和调试程序。同时,我们也发现了自己在编程和硬件方面的不足之处,需要在以后的学习中加以改进和提高。 6. 实验总结 ------- 本次实验让我们更加深入地了解了8086汇编语言和计算机硬件的基本原理,提高了我们的编程能力和问题解决能力。同时,我们也发现了自己的不足之处,需要在以后的学习中加以改进和提高。我们建议在未来的学习和实践中,要更加注重理论和实践的结合,提高自己的综合素质和能力。

实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作 (验证性) 1、实验目的: (1)掌握常用DEBUG命令: G,D,R,T,U,Q。 (2)掌握工具软件EMU8086。 (3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 (4)掌握简单的数值转换算法 2、实验说明: 计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。 3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数 4、参考程序: ; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元 DATA SEGMENT; 数据段 RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS STACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0) STACK_TOP DB 0 STACK ENDS CODE SEGMENT; 代码段

ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针 MOV AX, 2afH MOV CL, 100 DIV CL MOV RESULT_1, AL ; 除以100, 得百位数 MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余数除以10, 得十位数 MOV RESULT_3, AH ; 余数为个位数 MOV AX,4C00H ; 返回DOS INT 21H ; CODE ENDS END START ; 最后一行要按回车键 5、实验及报告要求: 1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的 伪指令和指令; 2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环 境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。 3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段 地址(CS=?,DS=?SS=?ES=?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的 主要依据。 5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法 和微机原理学习方法作出总结。 6、思考题: 1)用单步执行命令t运行程序,运行到mov ax, 4c00h,int 21h指令后,cs和 IP寄存器内容前后有何变化?产生变化的原因是什么? 2)试写出将BCD转换成二进制码的汇编程序。

汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤 一、实验环境 汇编语言程序设计的实验环境如下: 1.硬件环境 微型计算机(Intel x86系列CPU)一台 2.软件环境 ⏹Windows98/2000/XP操作系统 ⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等) ⏹汇编程序(MASM.EXE或TASM.EXE) ⏹连接程序(LINK.EXE或TLINK.EXE) ⏹调试程序(DEBUG.EXE或TD.EXE) 文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。 二、上机实验步骤 注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。 1.确定源程序的存放目录 建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建: 通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。 请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。 2.建立ASM源程序 建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。 在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“https://www.360docs.net/doc/9419183561.html, C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

实验一 汇编语言程序设计EMU8086基础实验

实验一汇编语言程序设计EMU8086基础实验 1、实验目的和要求: 了解使用EMU8086(8086汇编模拟工具)学习汇编的方法。 2、实验内容: 编写汇编程序,计算2010H+2011H,并把和存入RESULT单元。 8086汇编模拟工具,结合了一个先进的原始编辑器、汇编器、反汇编器、具除错功能的软体模拟工具(虚拟 PC),还有一个循序渐进的指导工具。这对刚开始学汇编语言的人会是一个很有用的工具。它会在模拟器中一步一步的编译程式码并执行,视觉化的工作环境让它更容易使用。你可以在程式执行当中检视暂存器、标志以及内存。模拟器会在虚拟 PC 中执行程式,这可以隔绝你的程式,避免它去存取实际硬体,像硬盘、内存,而在虚拟机器上执行汇编程序,这可以让除错变得更加容易。

3、实验仪器与器材:计算机及EMU8086汇编软件等。 4、实验原理:自己总结 5、实验过程与测试数据(含电路图/程序框图): A、打开EMU8086 v4.08软件,新建工程,选EXE模板,清屏,编写8086程序代码。 B、保存程序代码为*.asm文件,编译保存为可执行文件.exe,编译保存没有错误则模拟运行。如果有错误返回修改。运行有单步运行、全速运行等。 实验一参考程序 DATA SEGMENT X DW 2010H Y DW 2011H RESULT DW ? DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AX,X ADD AX,Y MOV RESULT,AX RET MAIN ENDP CODE ENDS END START 6、实验分析:自己分析 7、实验体会自己总结

四川大学微机原理实验报告

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。 实验二设计汇编语言程序

汇编语言程序设计上机步骤与调试方法

汇编语言程序设计上机步骤与调试方法 在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们 能够帮助程序员更好地编写和调试程序。本文将介绍汇编语言程序设 计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些 知识。 一、上机步骤 1. 准备工作 在开始上机之前,我们需要做一些准备工作。首先,确认计算机已 经连接好必要的硬件设备,例如键盘、显示器等。其次,确保操作系 统和开发环境已经正确安装并能够正常运行。最后,根据需要准备好 所需的汇编语言文档和程序样例。 2. 创建新项目 在开始编写汇编语言程序之前,我们需要创建一个新的项目。在项 目中,我们可以组织和管理相关的文件和代码。通常,我们会选择一 个合适的集成开发环境(IDE)来创建和管理项目。 3. 编写程序 在创建项目之后,我们可以开始编写汇编语言程序。首先,我们需 要了解目标机器的指令集和寄存器,以便正确地编写程序。然后,根 据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。

4. 调试程序 编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性 和稳定性。调试是一个迭代过程,通常包括以下步骤: - 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。 - 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行 过程,并检查各寄存器和内存的值。 - 监视变量:在调试过程中,我们可以监视程序中的变量值,以验 证其正确性。 - 查看输出:观察程序的输出结果,与预期结果进行比较,以确定 程序是否按照预期执行。 - 修复错误:如果发现程序中存在错误,我们需要对程序进行修改 和调整,直到问题解决为止。 5. 运行程序 在完成程序的调试之后,我们可以运行程序并观察其运行效果。在 运行过程中,我们可以测试程序的各种功能,以确保其正常工作。 二、调试方法 1. 打印输出 在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。在程序中插入打印语句,将一些变量的值打印到控制台或文件中,

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

实验报告 实验名称汇编语言程序设计 | | 专业班级:信息安全 学号: 姓名: 实验一汇编语言上机过程和Debug常用调试命令 一.实验目的: 学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和 运行程序的方法。 二.实验题目: 熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。 三.问题描述: 试编写一程序:比较两个字符串string1和string2所含的字符是否相同, 若相同则显示‘match’; 否则,显示‘no match’。

四.方法说明: a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。 b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj 如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。 c) 用连接程序link 产生执行文件EXE. d) 执行程序,可直接从DOS执行程序。 e) 使用debug程序调试程序的方法。 五.实验步骤: 1.调用字处理程序EDIT 建立以sample.asm文件 datarea segment string1 db ‘move the cursor backward.’ string2 db ‘move the cursor backward.’ mess1 db ‘Match..’,13,10,’$’ mess2 db ‘No match!..’,13,10,’$’ datarea ends prognam segment

main proc far assume cs:prognam,ds:datarea,es:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,string2 cld mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short disp

汇编语言上机指导

汇编语言上机指导 一、概述 汇编语言是一种低级别的程序设计语言,它直接使用计算机的指令集架构来编写程序。而在进行汇编语言的实际操作时,上机指导是必不可少的一环。本文将为您提供一份汇编语言上机指导,以帮助您在实践中更好地掌握汇编语言的应用。 二、实验环境与所需工具 在进行汇编语言的上机实验之前,您需要准备以下工具和环境: 1. 计算机:一台能够运行汇编语言开发环境的计算机; 2. 汇编语言开发环境:例如MASM、NASM等; 3. 文本编辑器:用于编写汇编源代码的工具,例如Notepad++、Sublime Text等; 4. 模拟器或调试器:用于模拟或调试汇编程序的工具,例如DOSBox、Emu8086等。 三、实验步骤 1. 安装汇编语言开发环境:根据您选择的汇编语言开发环境,下载并安装相应的软件。 2. 创建汇编源代码文件:使用文本编辑器创建一个新的文本文件,并将其保存为.asm文件格式。

3. 编写汇编程序:根据实验要求或题目要求,使用汇编语言编写相应的程序代码。在编写过程中,需要熟悉所选汇编语言的语法和指令集。 4. 保存源代码文件:在编写完成后,保存源代码文件,并注意文件的命名规范和格式要求。 5. 编译源代码:打开所选汇编语言开发环境,并将源代码文件导入到该环境中。使用编译器将源代码文件转换为可执行文件。 6. 运行汇编程序:在模拟器或调试器中加载生成的可执行文件,并运行程序。通过观察程序的运行结果,验证程序代码的正确性和准确性。 7. 调试程序:如果程序在执行过程中出现错误或异常,可以使用调试器来逐步调试程序,找出错误的原因,并进行修正。 8. 优化程序:经过测试和调试后,可以根据实验需求对程序进行优化或改进,提高程序的性能和效率。 9. 文档整理:在上机实验结束后,对实验过程、实验结果和实验心得进行文档整理。将实验相关的代码、截图和注释整理成文档,并附上你的实验心得和体会。 四、注意事项 1. 在编写汇编程序时,需要遵循所使用汇编语言的语法和规范,注意标识符的命名规则和字符集的使用限制。

汇编语言实验指导书 (3)

实验报告 实验课程:汇编语言 学生姓名:李斯超 学号:6100409010 专业班级:电三091班 2010年12月20日

目录 实验1 利用DEBUG调试汇编语言程序段实验2 初级程序的编写与调试实验(一)实验3 初级程序的编写与调试实验(二)实验4 汇编语言程序上机过程 实验5 分支程序实验 实验6 循环程序实验 实验7 子程序实验

实验1 利用DEBUG调试汇编语言程序段 一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 2)E命令(修改指定内存) 例1:-E100 41 42 43 44 48 47 46 45 -D 100,L08 结果:08F1:0100 41 42 43 44 48 47 46 45 例2:-E 100: 08F1:0100 76 42 :42是操作员键入 此命令是将原100号内存内容76修改为42,用D命令可察看。 3)R命令(显示当前寄存器的内容) 4)T命令(设置陷井,单步执行) 5)A命令(将指令直接汇编成机器码输入到内存中。) 6)G命令等的使用(执行A命中输入的汇编指令) 3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。 四.实验环境 PC微机 DOS操作系统或Windows 操作系统 MASM.EXE,LINK.EXE,https://www.360docs.net/doc/9419183561.html,或宏汇编集成环境 五.实验步骤 1.在DOS提示符下,进入DEBUG程序; 在运行中输入cmd命令调出DOS窗口,在其中输入debug命令进入程序。 2.详细记录每一步所用的命令,以及查看结果的方法和具体结果。 (1)在debug中输入D查看当前数据数据段的断地址:偏移地址中的内容。如输入-d100,接着操作输入e命令,e命令可以修改指定的内存中的数据,如输入-e100

8086汇编语言程序设计 微机实验报告

微机实验报告 第一部分:8086汇编语言程序设计 一、实验目的 通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。 二、实验题目 (一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。(要求字符串从键盘上输入) 1、流程图

2、实验程序及注释 DATA SEGMENT BUFSIZE DB 20 ;数据段 ACTCHAR DB ? ;定义字符串 CHARTEXT DB 20 DUP(?) ;给输入字符分配内存 DB '$' CNT DB 0 ;给计数器分配内存 STRING1 DB 'PLEASE INPUT THE STRING:','$' STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$' DATA ENDS ;数据段结束 COSEG SEGMENT ;代码段 ASSUME CS:COSEG,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 ;显示提示语:请输入字符串 MOV AH,09H ;输出字符串STRING1 INT 21H MOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZE MOV AH,0AH ;并送显 INT 21H MOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是 MOV AH,09H ;输出字符串STRING2 INT 21H MOV AH,01H ;从键盘上输入字符到AL中并送显 INT 21H MOV BX,OFFSET CHARTEXT ;将字符串首地址存入BX MOV CL,ACTCHAR ;置循环次数CX=字符串长度 XOR CH,CH LP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2 INC BX ;指针指向字符串下一个字符 DEC CX ;循环次数减一 JNZ LP1 ;若还有未比较的字符,继续循环LP1 JMP FINI ;若全部比较完毕,跳转FINI LP2: INC CNT ;计数器增一 INC BX ;指针指向字符串下一个字符 DEC CX ;循环次数减一 JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09H INT 21H MOV AL,CNT ;将计数器的值送AL AAM ;将此值转换成非压缩BCD码

微机原理课程上机实验内容

该课程在微机房实验共分为4 次,8 个学时,两大部分实验内容,请每次预习下次试验内容,并把程序编好,再来上机调试!最后实验环节的成绩按上机实验时的表现和实验报告两部分相加,请认真对待!第一次实验 第一部分汇编语言程序设计 实验一熟悉、使用DEBUG 调试工具 一.上机目的: 1 .了解并逐步熟悉汇编语言的编辑方法及特点. 2.复习8088 汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。 3.掌握汇编语言的编辑、汇编及连接的过程。 4.了解并逐步掌握运用DEBUG进行调试汇编语言程序。 二.实验内容: 1.运用8086 汇编语言, 编辑多字节非压缩型BCD 数除法的简单程序, 文件名取为*. ASM 。 2.运用MASM • EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ文件。 3.运用LINK .EXE 文件进行连接,形成*.EXE 文件。 4.仔细阅读附录中的DEBUG 部分,掌握各种命令的所有方法。 5.运用DEBUG。EXE 文件进行调试,使用单步执行命令—T 两次,观察寄存器中内容的变化,使用察看存储器数据段命令一D,观察存储器数据段内数值。 6.再使用连续执行命令一G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单 步执行等功能发现错误所在并加以改正。 练习一熟悉DEBUGS序的使用 上机要求: 一.运用8086汇编语言,编辑两数排队的简单程序,文件名取为*.ASM。 二.运用MASM.EX文件进行汇编,直至正确,形成*.OBJ文件。 三.运用LINK .EXE文件进行连接,形成*.EXE文件。四•认真阅读DEBUGS的命令与功能。 五. 运用DEBUG.EXE 文件进行调试。使用单步执行命令一-T 两次,观察寄存器中内容的变化:使用 查看存储器数据段命令一-D,观察存储器数据段内数值。 六•再使用连续执行命令-T G,及使用查看存储器数据段命令一-D,观察存储器数据段内数值的结果是否符号要求。 七.在以上步骤完成后,可以运用DEPUG^的其它命令,如N、L、u、A、R、Q等等命令,以进一步了解 DEBUG勺功能及特点。

汇编语言上机 实验一 DEBUG常用命令及8086指令使用

实验一DEBUG常用命令及8086指令使用 实验目的: 通过实验掌握下列知识: 1、8086指令: M OV,ADD,SUB,XCHG等 2、DEBUG命令: A,D,E,F,H,R,T,U。 3、ASCII码及用16进制数表示二进制码的方法。 内容及步骤: 一、DEBUG 命令使用: 1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存 单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。

二、8086常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV AX,1234 MOV BX,5678 XCHG A X,BX MOV AH,35

MOV AL,48 MOV DX,75AB XCHG A X,DX 2)用U命令检查键入的程序并记录,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。 2、加减法指令:

汇编语言程序设计实验篇(emu8086)

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.360docs.net/doc/9419183561.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。 在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地

址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。

相关文档
最新文档