实验一 汇编语言基本指令操作练习
一、实验目的:
1、掌握8086/8088基本指令的使用方法和功能。
2、初步了解汇编语言程序设计的基本结构和利用DEBUG调试 程序的方法。
3、进一步熟悉汇编语言的上机过程。 二、上机实验指导:
(一)利用DEBUG的A命令输入指令,做如下实验。 1、比较下面指令的区别:
①MOVAX,2000H②MOVBX,[2000H]
-D20002001;显示字存储单元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
:;回车
-D00000005;显示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
3A6B:0107INCBX 3A6B:0108MOV[BX],AX 3A6B:010AINT3 3A6B:010B -G;运行此程序
AX=C0CCBX=0004CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=3A6BES=3A6BSS=3A6BCS=3A6BIP=010ANVUPEIPLNZNAPONC 3A6B:010ACCINT3
-D00000005;观察运行结果,检查第三个字操作数是否为前两个 字操作数之和
3A6B:0000CD20FF9FCCC0..... 3、在屏幕上显示大写字符”A”。 -A
1277:0100movah,2
1277:0102movdl,41;大写字符”A”的ASCII值为41H 1277:0104int21 1277:0106int3 1277:0107 -G
A;显示大写字符”A”
AX=0241BX=0000CX=0000DX=0041SP=FFEEBP=0000SI=0000DI=0000 DS=1277ES=1277SS=1277CS=1277IP=0106NVUPEIPLNZNAPONC 1277:0106CCINT3 三、实验步骤
1、按照上机实验指导的内容,练习三个程序的运行和调试。 2、用DEBUG的A命令输入指令,完成以下功能:
已知(AL)=50H,(BL)=18H,计算AL-BL,并将存入CL中。 输入指令后,运行调试,观察运行结果。 -a
1277:0100moval,50 1277:0102movbl,18 1277:0104subal,bl 1277:0106movcl,al 1277:0108int3
1277:0109
-g;观察寄存器AX,BX,CX的内容
AX=0038BX=0018CX=0038DX=0000SP=FFEEBP=0000SI=0000DI=0000 DS=1277ES=1277SS=1277CS=1277IP=0108NVUPEIPLNZACPONC 1277:0108CCINT3
3、用DEBUG的A命令输入指令,完成以下功能: 输入一个大写字母,将其转换为小写字母后输出。 编好程序后,用DEBUG调试、运行程序。 -a
1277:0100movah,1 1277:0102int21 1277:0104addal,20 1277:0106movdl,al 1277:0108movah,2 1277:010Aint21 1277:010Cint3 1277:010D -g
Aa;输入一大写字母转换为小写字母后输出
AX=022ABX=0000CX=0000DX=002ASP=FFEEBP=0000SI=0000DI=0000 DS=1277ES=1277SS=1277CS=1277IP=010CNVUPEIPLNZNAPONC 1277:010CCCINT3 四、实验报告
1、用DEBUG调试程序时,如何设置断点? 2、写出实验内容二的程序段。 3、写出实验内容三的源程序。