好文档 - 专业文书写作范文服务资料分享网站

实验1汇编语言实验环境与基本操作

天下 分享 时间: 加入收藏 我要投稿 点赞

实验1 汇编语言实验环境与基本操作

班级: 计科(高职)12-2 姓名: 韩长莉 学号: 201203014062 上机时间: 2014.4.14 上机地点: 一机房 指导老师: 尉秀梅

一.实验目的:

1.学习debug的主要用法,熟悉R,D,E,U,T,A等常用的命令。 2.理解堆栈的工作原理,push和pop指令的执行步骤。

3.掌握一个完整的汇编程序从写出到执行的过程,熟悉用debug跟踪程序的执行过程。 二.实验内容:

1.查看cpu和内存,用机器指令和汇编指令编程(p35) 2.用机器指令和汇编指令编程(p71) 3.编程、编译、连接、跟踪(94页) 三.实验步骤

1.查看cpu和内存,用机器指令和汇编指令编程(p35)

(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄存器中内容的变化。

提示:可用E命令和A命令,以两种方式将指令写入内存。注意用t命令执行时,cs:ip的指向。

写清楚具体用这两种方式的操作方法。

C:\\Users\\Administrator>debug

-e 1000:0 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8 -u 1000:0

1000:0000 B8204E MOV AX,4E20 1000:0003 051614 ADD AX,1416 1000:0006 BB0020 MOV BX,2000 1000:0009 01D8 ADD AX,BX 1000:000B 89C3 MOV BX,AX 1000:000D 01D8 ADD AX,BX 1000:000F B81A00 MOV AX,001A 1000:0012 BB2600 MOV BX,0026 1000:0015 00D8 ADD AL,BL

1000:0017 28752D SUB [DI+2D],DH

1000:001A 807C0429 CMP BYTE PTR [SI+04],29 1000:001E 7554 JNZ 0074 -r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=13C0 IP=0100 NV UP EI PL NZ NA PO NC

13C0:0100 0000 ADD [BX+SI],AL DS:0000=CDCS 13C0 :1000 -rip IP 0100

:0 -r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ NA PO NC 1000:0000 B8204E MOV AX,4E20 -t

AX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ NA PO NC 1000:0003 051614 ADD AX,1416 -t

AX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC 1000:0006 BB0020 MOV BX,2000 -t

AX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0009 NV UP EI PL NZ NA PE NC 1000:0009 01D8 ADD AX,BX

AX=001A BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0015 OV UP EI PL NZ NA PE CY 1000:0015 00D8 ADD AL,BL -t

AX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC

1000:0017 28752D SUB [DI+2D],DH DS:002D=0D-e 1000:17 00 dc 00 c7 b4 00 00 d8 04 9c -u 1000:17

1000:0017 00DC ADD AH,BL 1000:0019 00C7 ADD BH,AL 1000:001B B400 MOV AH,00 1000:001D 00D8 ADD AL,BL 1000:001F 049C ADD AL,9C 1000:0021 44 INC SP

1000:0022 032C ADD BP,[SI]

1000:0024 30724D XOR [BP+SI+4D],DH 1000:0027 3C07 CMP AL,07 1000:0029 7749 JA 0074

1000:002B A2A756 MOV [56A7],AL

1000:002E FE064057 INC BYTE PTR [5740] 1000:0032 83C605 ADD SI,+05

1000:0035 813C2C53 CMP WORD PTR [SI],532C

--r

AX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC 1000:0017 00DC ADD AH,BL -rcs CS 1000 :1000 -rip IP 0017 :0 -r

AX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ AC PO NC 1000:0000 B8204E MOV AX,4E20 -t

AX=4E20 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ AC PO NC 1000:0003 051614 ADD AX,1416 -t

AX=6236 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC 1000:0006 BB0020 MOV BX,2000 -

AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001B NV UP EI PL NZ NA PO NC 1000:001B B400 MOV AH,00 -t

AX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001D NV UP EI PL NZ NA PO NC 1000:001D 00D8 ADD AL,BL -t

AX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001F NV UP EI PL NZ NA PE NC 1000:001F 049C ADD AL,9C -t

(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。 Mov ax,1 Add ax,ax Jmp 2000:0003

写清楚具体如何执行,执行到什么时候停止?。 (3)查看内存中的内容。

PC机主板上的ROM中写有一个生产日期,在内存fff00~fffffH的某几个单元中,请找到这个日期并试图改变它。

写清楚查看及修改的步骤以及结果。

(4)项内存从B8100H开始的单元中填写数据,如: -e B810:0000 01 01 02 02 03 03 04 04

请先填写不同的数据,观察产生的现象;在改变填写的地址,观察产生的现象。 2.用机器指令和汇编指令编程(p71)

(1)使用debug,将程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。 Mov ax,ffff Mov ds,ax

Mov ax, 2200 Mov ss,ax

Mov sp,0100

Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov ax,[4] ;bx= Add bx,[6] ;bx=

Push ax ;sp= ;修改的内存单元的地址是 内容为 Push bx ;sp= ;修改的内存单元的地址是 内容为 Pop ax ;sp= ; ax= Pop bx ;sp= ; bx=

Push [4] ;sp= ;修改的内存单元的地址是 内容为 Push [6] ;sp= ;修改的内存单元的地址是 内容为

(2)仔细观察实验过程,然后分析,为什么2000:0~2000:f的内容会发生改变? 3.编程、编译、连接、跟踪(94页)

(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。 Assume cs:codesg Codesg segment MOV ax,2000h Mov ss,ax Mov sp,0

Add sp,10 Pop ax Pop bx Push ax Push bx

Pop ax Pop bx

Mov ax,4c00h Int 21h Codesg ends End

写出具体步骤

(2)用Debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

(3)PSP的头两个字节是CD 20,用debug加载t1.exe,查看psp的内容。 写出具体步骤

实验1汇编语言实验环境与基本操作

实验1汇编语言实验环境与基本操作班级:计科(高职)12-2姓名:韩长莉学号:201203014062上机时间:2014.4.14上机地点:一机房指导老师:尉秀梅一.实验目的:1.学习debug的主要用法,熟悉R,D,E,U,T,A等常用的命令。2.理解
推荐度:
点击下载文档文档为doc格式
388s73kdse072if1yc9t
领取福利

微信扫码领取福利

微信扫码分享