汇编语言上机实验指导

汇编语言上机实验指导
汇编语言上机实验指导

汇编语言上机实验指导

实验一汇编语言基本指令操作练习

一、实验目的:

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

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

-D0*******;观察运行结果,检查第三个字操作数是否为前两个

字操作数之和

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、写出实验内容三的源程序。

实验二顺序结构程序设计

一、实验目的:

1、掌握顺序结构程序设计的基本方法。

2、熟悉汇编语言程序设计的基本结构和常用指令的使用。

3、进一步熟悉汇编语言的上机过程和DEBUG的使用。

二、上机实验指导:

(一)编写一个程序,在屏幕上输出一个大写字母”A”。

1、编写源程序,存为lx1.asm.

codesegment

assumecs:code

main:

movah,2

movdl,?A?

int21h

movah,4ch

int21h

codeends

endmain

2、汇编

masmlx1;

3、连接

linklx1;

4、运行

lx1

(二)编写程序完成如下功能:

已知字节变量X,Y存放于VARX,VARY存储单元中,利用公式求Z的值,

并将结果存放于RESULT存储单元中。

公式:Z=((X+Y)*8-X)/2

参考程序如下:(程序名:lx2.asm)

datasegment

varxdb06h

varydb07h

resultdb?

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

movdl,varx;DL<-X

adddl,vary;DL<-X+Y

movcl,3

saldl,cl;DL<-(X+Y)*8

subdl,varx;DL<-(X+Y)*8-X

sardl,1;DL<-((X+Y)*8-X)/2

movresult,dl

movah,4ch

int21h;退出程序

codeends

endstart

C:\MASM\DEBUGLX2.EXE

-U;反汇编

0F7A:0000B8790FMOVAX,0F79

0F7A:00038ED8MOVDS,AX

0F7A:00058A160000MOVDL,[0000]

0F7A:000902160100ADDDL,[0001]

0F7A:000DB103MOVCL,03

0F7A:000FD2E2SHLDL,CL

0F7A:00112A160000SUBDL,[0000]

0F7A:0015D0FASARDL,1

0F7A:001788160200MOV[0002],DL

0F7A:001BB44CMOVAH,4C

0F7A:001DCD21INT21;源程序结束

-G=01B;运行到断点CS:001B

AX=0F79BX=0000CX=0003DX=0031SP=0000BP=0000SI=0000DI=0000 DS=0F79ES=0F69SS=0F79CS=0F7AIP=001BNVUPEIPLNZACPONC

0F7A:001BB44CMOVAH,4C

-D0*******;数据段三个字节内容分别为X,Y,Z

0F79:0000060731..1

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、编写程序完成如下功能:

用十进制输出一个按键的ASCII码值。(教材43页例3.11)

3、编写程序完成如下功能:

输入两个一位数,输出它们的积。(教材44页例3.12)

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

实验三分支结构程序设计

一、实验目的:

1、掌握分支结构程序设计的基本方法。

2、掌握无条件转移指令和条件转移指令的使用。

3、掌握分支结构程序设计的两种基本结构的使用。

二、上机实验指导:

(一)编写程序,将BX与DX中较大的一个无符号数放到AX中。(程序文件名lx61.asm)

codesegment

assumecs:code

start:

movbx,1000;十进制数

movdx,785h;十六进制数

cmpbx,dx

jalab3;如BX>DX

movax,dx

jmplab4

lab3:movax,bx

lab4:movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGLX61.EXE

-u

35D1:0000BBE803MOVBX,03E8

35D1:0003BA8507MOVDX,0785

35D1:00063BDACMPBX,DX

35D1:00087705JA000F

35D1:000A8BC2MOVAX,DX

35D1:000CEB03JMP0011

35D1:000E90NOP

35D1:000F8BC3MOVAX,BX

35D1:0011B44CMOVAH,4C

35D1:0013CD21INT21

35D1:0015FF34PUSH[SI]

35D1:001726ES:

35D1:00188A4402MOVAL,[SI+02]

35D1:001B2AE4SUBAH,AH

35D1:001D50PUSHAX

35D1:001EE80B02CALL022C

-g=011

;观察寄存器AX、BX、DX的值

AX=0785BX=03E8CX=0015DX=0785SP=0000BP=0000SI=0000DI=0000 DS=35C1ES=35C1SS=35D1CS=35D1IP=0011NVUPEINGNZNAPECY

35D1:0011B44CMOVAH,4C

(二)

1(x>0)

已知符号函数Y=1(x=0),给出X值在存储器XX单元,

-1(x<0)

根据符号函数求出Y值存放于YY单元。(程序名:EX62.ASM)datasegment

xxdb12h

yydb?

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

cmpxx,0

jezero;如XX为0,则转到zero

jnsbig;否则如XX大于0,转到big

movbl,0ffh;否则,XX小于0

jmpend1

zero:

movbl,0

jmpend1

big:

movbl,1

end1:

movyy,bl

movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGEX6.EXE

-U;反汇编

36E8:0000B8E736MOVAX,36E7

36E8:00038ED8MOVDS,AX

36E8:0005803E000000CMPBYTEPTR[0000],00

36E8:000A7407JZ0013

36E8:000C790AJNS0018

36E8:000EB3FFMOVBL,FF

36E8:0010EB08JMP001A

36E8:001290NOP

36E8:0013B300MOVBL,00

36E8:0015EB03JMP001A

36E8:001790NOP

36E8:0018B301MOVBL,01

36E8:001A881E0100MOV[0001],BL

36E8:001EB44CMOVAH,4C

-G=01E;运行到断点001E

AX=36E7BX=0001CX=0032DX=0000SP=0000BP=0000SI=0000DI=0000 DS=36E7ES=36D7SS=36E7CS=36E8IP=001ENVUPEIPLNZNAPENC

36E8:001EB44CMOVAH,4C

-D0*******;观察运行结果(X为12H时,Y为01H)

36E7:00001201..

-E0000F0;将X修改为F0H(DS:0000)

-G=01E;再次运行程序

AX=36E7BX=00FFCX=0032DX=0000SP=0000BP=0000SI=0000DI=0000 DS=36E7ES=36D7SS=36E7CS=36E8IP=001ENVUPEINGNZNAPENC

36E8:001EB44CMOVAH,4C

-D0*******;观察运行结果(X为F0H时,Y为0FFH)

36E7:0000F0FF..

-E00000;将X修改为00H

-G=01E;再次运行程序

AX=36E7BX=0000CX=0032DX=0000SP=0000BP=0000SI=0000DI=0000 DS=36E7ES=36D7SS=36E7CS=36E8IP=001ENVUPEIPLZRNAPENC

36E8:001EB44CMOVAH,4C

-D0*******;观察运行结果(X为00H时,Y为00H)

36E7:00000000..

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、编写程序完成如下功能:

输入两个一位数,输出它们的积。(教材63页例4.9)

3、编写程序完成如下功能:

从键盘接收一个按键,如果按键是小写字母则输出“L”,如果按键是大写字母则输出“U”,如果按键是数字则输出“N”,如果不是以上字符,则输出“*”。(教材65页例4.10)

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

实验四循环结构程序设计

一、实验目的:

1、掌握循环结构程序设计的基本方法。

2、掌握循环程序中重复控制指令的使用。

3、掌握循环结构程序设计的组成部分和基本结构形式。

二、上机实验指导:

在数据段中有如下数据区,统计该数据区中正数,0,负数的个数。

VARDB2,-3,0,5,-7,0,0,8,6,-9

参考程序如下:(程序名:EX71.ASM)

datasegment

vardb2,-3,0,5,-7,0,0,8,6,-9

xxdb?;存正数个数

yydb?;存负数个数

zzdb?;存零个数

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

movah,0;AH存正数个数

moval,0;AL存负数个数

movbh,0;BH存零个数

movsi,offsetvar

movcx,xx-var;CX数据个数

go:cmpbyteptr[si],0

jzzero

jnsplus

incal

jmpnext

zero:incbh

jmpnext

plus:incah

next:incsi

loopgo

movxx,ah;将个数存入存储单元

movyy,al

movzz,bh

movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGEX71.EXE

-U;反汇编

2CA2:0000B8A12CMOVAX,2CA1

2CA2:00038ED8MOVDS,AX

2CA2:0005B400MOVAH,00

2CA2:0007B000MOVAL,00

2CA2:0009B700MOVBH,00

2CA2:000BBE0000MOVSI,0000

2CA2:000EB90A00MOVCX,000A

2CA2:0011803C00CMPBYTEPTR[SI],00

2CA2:00147407JZ001D

2CA2:0016790AJNS0022

2CA2:0018FEC0INCAL

2CA2:001AEB08JMP0024

2CA2:001C90NOP

2CA2:001DFEC7INCBH

2CA2:001FEB03JMP0024

—U

2CA2:002190NOP

2CA2:0022FEC4INCAH

2CA2:002446INCSI

2CA2:0025E2EALOOP0011

2CA2:002788260A00MOV[000A],AH

2CA2:002BA20B00MOV[000B],AL

2CA2:002E883E0C00MOV[000C],BH

2CA2:0032B44CMOVAH,4C

2CA2:0034CD21INT21

-g=032

AX=0403BX=0300CX=0000DX=0000SP=0000BP=0000SI=000ADI=0000 DS=2CA1ES=2C91SS=2CA1CS=2CA2IP=0032NVUPEIPLNZNAPENC

2CA2:0032B44CMOVAH,4C

-d0000000f;10个数据后存个数,分别为4,3,3

2CA1:000002FD0005F9000008-06F7040303000000.....

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、编程序计算S=1+2+3+.....+10,并把和放在BL中。(用LOOP指令)

3、编写程序,在一行上依次显示26个大写英文字母。(教材69页例4.14)

4、调试教材71页例4.16的程序。

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容四的源程序。

实验五变量的使用及字符串的输入输出

一、实验目的:

1、掌握变量的基本使用方法。

2、掌握字符串的输入输出方法的使用。

3、掌握数据段的定义方法。

二、上机实验指导:

数据段开始区域中,连续存放着10个无符号数,编程序找出这10个数中最大的一个数,并将其存到该数据区的后面。(LX81.ASM)

datasegment

buf1db60h,50h,20h,40h,80h,90h,00h,10h,30h,70h

buf2db?

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

movsi,offsetbuf1

moval,[si]

movcx,9

go:

incsi

cmpal,[si]

jncnext

moval,[si]

next:

loopgo

movbuf2,al

movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGLX81.EXE

-U

12AF:0000B8AE12MOVAX,12AE

12AF:00038ED8MOVDS,AX

12AF:0005BE0000MOVSI,0000

12AF:00088A04MOVAL,[SI]

12AF:000AB90900MOVCX,0009

12AF:000D46INCSI

12AF:000E3A04CMPAL,[SI]

12AF:00107302JNB0014

12AF:00128A04MOVAL,[SI]

12AF:0014E2F7LOOP000D

12AF:0016A20A00MOV[000A],AL

12AF:0019B44CMOVAH,4C

12AF:001BCD21INT21

12AF:001DC45EF4LESBX,[BP-0C]

-G=019

AX=1290BX=0000CX=0000DX=0000SP=0000BP=0000SI=0009DI=0000

DS=12AEES=129ESS=12AECS=12AFIP=0019OVUPEIPLNZNAPONC

12AF:0019B44CMOVAH,4C

-D0000000f;最大数为90H

12AE:00006050204080900010-3070900000000000

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、复习上几个实验中,用到数据段的几个程序,加深练习。

3.已知字符串…ABCDEFGH?位于数据段开始的区域中,编程序将该字符串

转换为小写后,存于其后。

4、调试运行程序:教材86页例5.8。

5、编写程序完成如下功能:

输入一个字符串,在下一行原样输出。(教材87页例5.9)

四、实验报告

1、写出实验内容3的源程序。

2、写出实验内容5的源程序。

实验六数据运算指令及伪指令的使用

一、实验目的:

1、掌握几种常用的数据运算指令的使用方法。

2、掌握几种常用的逻辑运算指令的使用方法。

3、掌握查表指令的使用方法。

二、上机实验指导:

数据段开始区域中,连续存放着10个无符号数,编程序找出这10个数中奇数的个数,并将其存到该数据区的后面。(LX91.ASM)

datasegment

buf1db64h,52h,25h,47h,86h,98h,30h,17h,34h,79h

buf2db?

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

xorbx,bx

movsi,offsetbuf1

movcx,10

go:

testbyteptr[si],1

jznext

incbl

next:

incsi

loopgo

movbuf2,bl

movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGLX81.EXE

-U

12AF:0000B8AE12MOVAX,12AE

12AF:00038ED8MOVDS,AX

12AF:000533DBXORBX,BX

12AF:0007BE0000MOVSI,0000

12AF:000AB90A00MOVCX,000A

12AF:000DF60401TESTBYTEPTR[SI],01

12AF:00107402JZ0014

12AF:0012FEC3INCBL

12AF:001446INCSI

12AF:0015E2F6LOOP000D

12AF:0017881E0A00MOV[000A],BL

12AF:001BB44CMOVAH,4C

12AF:001DCD21INT21

12AF:001FF4HLT

-G=01b

AX=12AEBX=0004CX=0000DX=0000SP=0000BP=0000SI=000ADI=0000

DS=12AEES=129ESS=12AECS=12AFIP=001BNVUPEIPLNZNAPENC 12AF:001BB44CMOVAH,4C

-D0000000f

;奇数的个数为4个

12AE:00006452254786983017-3479040000000000

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、调试运行程序:教材92页例5.13。

3、调试运行程序:教材103页例5.21。

四、实验报告

1、写出实验内容3的源程序。

2、写出实验内容5的源程序。

实验七子程序设计(一)

一、实验目的:

1、掌握子程序设计的基本方法。

2、掌握子程序中调用和返回指令的使用。

3、掌握子程序设计时参数传递的几种方法。

二、上机实验指导:

编程序求下列和值:

S=(1+2+3)+(1+2+3+4)+(1+2+3+4+5)

将和值存在数据段偏移量为0100H的单元中。(EX10-1.ASM)datasegment

org0100h

vardb?;VAR存放和值

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

┌movah,3;调用求和子程序

│callsum

└movdh,bh

┌movah,4;调用求和子程序

│callsum

└adddh,bh

┌movah,5;调用求和子程序

│callsum

└adddh,bh

movvar,dh;和存入VAR movah,4ch

int21h

┌─sumprocnear;求累加和子程序│movch,0;入口参数:AH终值

│movbh,0;出口参数:BH累加和│go:incch

│addbh,ch;CH:计数器

│cmpah,ch

│jnzgo

│ret

└─sumendp

codeends

endstart

C:\MASM\DEBUGEX10-1.EXE

-U002E

36E6:0000B80020MOVAX,2000

36E6:00038ED8MOVDS,AX

36E6:0005B403MOVAH,03

36E6:0007E81800CALL0022

36E6:000A8AF7MOVDH,BH

36E6:000CB404MOVAH,04

36E6:000EE81100CALL0022

36E6:001102F7ADDDH,BH

36E6:0013B405MOVAH,05

36E6:0015E80A00CALL0022

36E6:001802F7ADDDH,BH

36E6:001A88360001MOV[0100],DH 36E6:001EB44CMOVAH,4C

36E6:0020CD21INT21

;以下为子程序

36E6:0022B500MOVCH,00

36E6:0024B700MOVBH,00

36E6:0026FEC5INCCH

36E6:002802FDADDBH,CH

36E6:002A3AE5CMPAH,CH

36E6:002C75F8JNZ0026

36E6:002EC3RET

-G=0C;观察第一次求和,DH=06H

AX=0300BX=0600CX=032FDX=0600SP=0000BP=0000SI=0000DI=0000 DS=2000ES=36D6SS=36E6CS=36E6IP=000CNVUPEIPLZRNAPENC

36E6:000CB404MOVAH,04

-G=013;观察第二次求和,DH=10H

AX=0400BX=0A00CX=042FDX=1000SP=0000BP=0000SI=0000DI=0000 DS=2000ES=36D6SS=36E6CS=36E6IP=0013NVUPEIPLNZACPONC

36E6:0013B405MOVAH,05

-G=01E;观察第三次求和,DH=1FH

AX=0500BX=0F00CX=052FDX=1F00SP=0000BP=0000SI=0000DI=0000 DS=2000ES=36D6SS=36E6CS=36E6IP=001ENVUPEIPLNZNAPONC

36E6:001EB44CMOVAH,4C

-d0*******;观察存储单元

2000:01001F.

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、调试运行程序:教材114页例6.3。

3、调试运行程序:教材118页例6.6。

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

实验八子程序设计(二)

一、实验目的:

1、继续掌握子程序设计的基本方法。

2、掌握子程序设计时参数传递的几种方法。

二、上机实验指导:

编写子程序:求数据段中一系列数据之和,并存于其后。(EX11.ASM)datasegment

buf1db03h,02h,05h,07h,06h,08h,00h,01h,04h,09h

buf2db?

dataends

codesegment

assumecs:code,ds:data

start:

movds,ax

movsi,offsetbuf1

movcx,10

callsum

movah,4ch

int21h

sumprocnear

pushbx

xorbx,bx

go:

addbl,[si]

incsi

loopgo

mov[si],bl

sumendp

codeends

endstart

C:\MASM\DEBUGEX11.EXE

-U

12AF:0000B8AE12MOVAX,12AE

12AF:00038ED8MOVDS,AX

12AF:0005BE0000MOVSI,0000

12AF:0008B90A00MOVCX,000A

12AF:000BE80400CALL0012

12AF:000EB44CMOVAH,4C

12AF:0010CD21INT21

12AF:001253PUSHBX

12AF:001333DBXORBX,BX

12AF:0015021CADDBL,[SI]

12AF:001746INCSI

12AF:0018E2FBLOOP0015

12AF:001A881CMOV[SI],BL

12AF:001C82FF83CMPBH,83

12AF:001FC4065DC3LESAX,[C35D]

-G=0e

AX=0000BX=000ECX=0000DX=0000SP=FFFCBP=0000SI=000ADI=0000 DS=12AEES=0503SS=12AECS=12AFIP=000ENVUPEINGNZACPECY

12AF:000EB44CMOVAH,4C

-d0000000f;十个数之和为2DH(45)

12AE:00000302050706080001-04092D0000000000

1、上机调试、运行实验指导中的参考程序。

2、调试运行程序:教材114页例6.10。

3、调试运行程序:教材118页例6.14。

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

实验九移位指令和串操作指令

一、实验目的:

1、掌握串操作指令和重复操作前缀的使用。

2、掌握移位指令的使用方法。

二、上机实验指导:

比较两字符串是否相同。如相同,显示'match',否则显示'nomatch'。(lx12-1.asm)

datasegment

str1db'aabbccdd'

str2db'aabbccdd'

msg1db'match',13,10,'$'

msg2db'nomatch',13,10,'$'

dataends

codesegment

assumecs:code,ds:data,es:data

start:

movax,data

movds,ax

moves,ax

leasi,str1

leadi,str2

cld

movcx,8

repzcmpsb

jzmatch

leadx,msg2

jmpdisp

match:

leadx,msg1

disp:

movah,9

int21h

movah,4ch

int21h

codeends

endstart

C:\MASM\DEBUGLX12-1.EXE

-U

14A1:0000B89E14MOVAX,149E

14A1:00038ED8MOVDS,AX

14A1:00058EC0MOVES,AX

14A1:00078D360000LEASI,[0000]

14A1:000B8D3E0800LEADI,[0008]

14A1:000FFCCLD

14A1:0010B90800MOVCX,0008

14A1:0013F3REPZ

14A1:0014A6CMPSB

14A1:00157406JZ001D

14A1:00178D161800LEADX,[0018]

14A1:001BEB04JMP0021

14A1:001D8D161000LEADX,[0010]

14A1:0021B409MOVAH,09

14A1:0023CD21INT21

14A1:0026B44CMOVAH,4C

14A1:0027CD21INT21

-G=026

match

AX=0924BX=0000CX=0000DX=0010SP=0000BP=0000SI=0008DI=0010 DS=149EES=149ESS=149ECS=14A1IP=0025NVUPEIPLZRNAPENC

14A1:0025B44CMOVAH,4C

-E0000'bbaa';将源串修改为…bbaaccdd?

-G=026

nomatch

AX=0924BX=0000CX=0007DX=0018SP=0000BP=0000SI=0001DI=0009 DS=149EES=149ESS=149ECS=14A1IP=0025NVUPEIPLNZNAPONC

14A1:0025B44CMOVAH,4C

三、实验步骤

1、上机调试、运行实验指导中的参考程序,可以从DOS命令行运行

程序,查看结果。

2、已知字符串STR1位于数据段从0100H开始的区域中,其内容为…AAABBCCDD?,编程序将该字符串传送至0200H开始的区域中。

(用串操作指令)

3、AX寄存器中存放一个16位二进制数,统计AX中“1”的个数

并把结果存于CX寄存器中。

4、在数据段定义如下无符号数:

buf1db12H,7FH,56H,80H,0FEH,34H,45H,0A4H

将以上数据高低4位互换后存于其后。(用串操作指令)

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

实验十输入输出与终端控制

一、实验目的:

1、掌握计算机系统中常用的输入输出方法。

2、掌握键盘与屏幕的控制技术。

二、上机实验指导:

在显示器上绘制一方框图形。(lx12-1.asm)datasegment

rowdw40;开始点横坐标

columdw80;开始点纵坐标

lxdw60;X方向的长度

lydw40;Y方向的长度

dataends

codesegment

assumecs:code,ds:data

start:

movax,data

movds,ax

movah,0

moval,6

int10h;置显示模式为640*200图形方式

movdx,row

movcx,colum

callsubx;画上面横线

movdx,row

movcx,colum

addcx,lx

callsuby;画右边竖线

movdx,row

movcx,colum

callsuby;画左边竖线

movdx,row

adddx,ly

movcx,colum

callsubx;画下面横线

movah,4ch

int21h

subxproc;画横线子程序

movbp,lx;置线长

lop1:

movbh,0;置页号

inccx;横坐标加1

moval,1

movah,0ch

int10h;写象素

decbp

jnelop1

ret

subxendp

subyproc;画竖线子程序

movbp,ly;置线长

lop2:

movbh,0;置页号

incdx;纵坐标加1

moval,1

movah,0ch

int10h;写象素

decbp

jnelop2

ret

subyendp

codeends

endstart

三、实验步骤

1、上机调试、运行实验指导中的参考程序。

2、运行并调试程序:教材172页例8.2。

3、运行并调试程序:教材187页例8.4。

四、实验报告

1、写出实验内容二的源程序。

2、写出实验内容三的源程序。

汇编语言程序上机过程

汇编语言程序上机过程 实验目的: 1、掌握常用工具软件 PE,MASM和LINK的使用。 2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。 3、利用的 1号功能实现键盘输入的方法。 4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 程序: datasegment messagedb'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' dataends stacksegmentpara stack 'stack' db50 dup(?) stackends codesegment assumecs:code,ds:data,ss:stack start:movax,data movds,ax movdx,offset message movah,9 int21h again:movah,1 int21h cmpal,1bh jeexit cmpal,61h jcnd cmpal,7ah jand andal,11011111b nd:movdl,al movah,2 int21h jmpagain

exit:movah,4ch int21h codeends endstart 实验步骤: 1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。 2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3、用TYPE命令显示1产生的.LST文件。 4、用LINK将.OBJ文件连接成可执行的.EXE文件。 5、在DOS状态下运行LINK产生的。EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。 实验报告: 1、汇编,连接及调试时产生的错误,其原因及解决办法。 2、思考: 1)若在源程序中把INT 21H的'H'省去,会产生什么现象? 2)把 INT 21H 4CH号功能改为 INT 20H,行不行?

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言上机操作

汇编语言上机操作 一、建立子文件夹 如:D:\hb\masm 二、复制相关文件 把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。 三、进入DOS方式 开始/运行/cmd 当前提示符可能是: C:\documents and settings\administrator> 四、常用DOS操作命令 1、改变当前盘 输入d: 并回车,屏幕显示: D:\> 2、改变当前目录 1)进入下一级目录 D:\>cd hb 回车后,屏幕显示: D:\hb>cd masm 回车后,屏幕显示: E:\hb\masm> 问题:可以一次进入下面二级或多级目录吗? 2)返回上一级目录 D:\hb\masm>cd.. 回车后,屏幕显示: D:\hb\>cd.. 回车后,屏幕显示: D:\> 问题:可以直接返回根目录吗? D:\hb\masm>cd\ 回车后,屏幕显示: D:\> 3、显示当前目录容 D:\>dir /p 分页显示当前目录容 问题:如何显示d:\text中的容? D:\>dir d:\text↙ 4、DOS方式下如何运行程序? DOS方式下的可执行文件(即程序文件)扩展名为.exe或.,运行时只需要在系统提示符下输入文件主名即可。例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做: D:\hb\masm>test↙ 五、汇编语言上机过程 1、编辑源程序 运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。

2、汇编 D:\hb\masm>masm add5.asm↙ 生成目标程序文件add5.obj。(如果有语法错误,会提示错误所在行号和错误类型)3、连接 D:\hb\masm>link add5↙ 生成可执行文件add5.exe。 六、DEBUG程序调用及汇编语言程序调试方法 调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。DEBUG程序为用户提供多种命令,大致有:显示和修改寄存器和存贮单元的容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入存和写入磁盘等。用户利用这些命令可以查出任何程序功能上的错误。下面说明DEBUG程序的启动方法和主要命令意义。 (一)DEBUG程序的启动 DEBUG程序有两种启动方法。DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入存。但是这样启动只把DEBUG 程序本身装入存并进入等待DEBUG命令状态,还没有把要调试的程序装入存。第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。打入的命令格式如下: DEBUG[d:][path]filename[.ext][parml][parm2] 其中的Filename是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG程序为要调试程序准备的参数(一般不用)。 例进入DEBUG程序并装入要调试程序。其操作如下: D:\hb\masm>DEBUG add5.exe (进入DEBUG,并装配add5.exe) 此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。 如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入存。操作如下: D:\hb\masm>debug↙ - n add5.exe↙ - l↙ (二)DEBUG命令 在说明每个命令之前,先说明一些共同信息: ■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。 ■命令字母和参数可用大写或小写或混合形式。 ■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。 ■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。

汇编语言上机实验十2015李中

实验十输入/输出与中断实验 一、实验目的 1.掌握输入/输出与中断指令的使用方法; 2.掌握中断向量表的结构及使用方法; 3.掌握INT 指令的使用方法; 4.掌握BIOS 中断功能调用的使用方法; 5.掌握DOS 功能调用的使用方法。 二、实验要求 1.了解INT 指令与CALL 指令的不同点; 2.会用DEBUG 观察中断向量表; 3.会用DEBUG 的T 和P 命令执行INT 指令; 4.会用INT 10H、INT 16H 编制程序; 5.会用DOS 功能调用的02H、09H 功能编制程序 三、实验题目 1. 编制程序。利用IBM PC BIOS 功能调用的INT 16H 功能,编制一个从键盘上接收若干个字符串的程序。 2.编制程序。利用IBM PC BIOS 功能调用的INT 10H 功能,编制一个在屏幕上指定位置显示若干个字符串的程序。 四、实验思路 1调用INT16号功能实现输入字符,并且用int10号功能实现显示字符,并且将字符保存到data开始的内存单元中,如果不是ctrl+c的话循环输入输出,是的话结束程序.

2用INT10中03功能读出当前光标位置,然后保存当前的光标位置,只有用INT10中的02号功能设置要显示字符的位置,调用INT10的0E号功能循环显示字符,遇到结尾符号0的时候结束输出,然后恢复光标位置,调用INT10的1号功能恢复光标类型,用INT10的2号功能设置光标位置,使光标位置回到起点,结束程序. PUSH DX;保存当前光标位置 PUSH CX;保存光标类型 MOV DX,1020H;设置光标位置 MOV AH,02H INT 10H;设置光标位置 五、实验程序 1 DSEG SEGMENT;数据段开始 DATA DB 80 DUP (0);存储数据的单元 DSEG ENDS ;数据段结束 CSEG SEGMENT;代码段开始 ASSUME CS:CSEG,DS:DSEG;段假设 START: MOV AX,DSEG MOV DS,AX;段地址初始化

汇编语言上机指导

实验一DEBUG常用命令及8086指令使用 实验目的: 通过实验掌握下列知识: 1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 2、DEBUG命令: A,D,E,F,H,R,T,U。 3、ASCII码及用16进制数表示二进制码的方法。 4、8086寄存器: AX,BX,CX,DX,F,IP。 内容及步骤: 一、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 AX,BX MOV AH,35 MOV AL,48

MOV DX,75AB XCHG AX,DX 2)用U命令检查键入的程序并记录,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。 2、加减法指令: 1)用A命令在内存100H处键入下列内容: MOV AH,34 MOV AL,22 ADD AL,AH SUB AL,78 MOV CX,1284 MOV DX,5678 ADD CX,DX SUB CX,AX SUB CX,CX 2)用U命令检查键入的程序及对应的机器码。 3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。 3、带进位加减法: 1)用A命令在内存200H处键入下列内容,并用U命令检查: MOV AH,12 MOV AL,84 MOV CH,56 MOV CL,78 ADD AL,CL ADC AH,CH MOV DH,A7 MOV DL,58 SUB DL,7F

实验一熟悉汇编语言上机环境.pdf

实验一熟悉汇编语言上机环境 一、实验目的 熟悉在微机上建立、汇编、连接、调试和运行汇编语言程序的全过程。 二、实验要求 1.仔细阅读本实验教程的第一章和第二章; 2.学会使用EDIT建立汇编语言源程序文件; 3.学会使用MASM将汇编语言源程序编译为目标程序的两种方法; 4.学会使用LINK将目标程序连接为可执行程序的两种方法; 5.学会使用DEBUG中的U、D、G命令。 三、实验举例 【例3.1】 编辑、汇编、连接、执行下列程序,观察实验结果。 【程序功能】该程序的功能是利用BIOS功能调用,从键盘上接收若干个字符,并将它们的ASCII码与键盘扫描码以十六进制的形式显示出来,当按下+键时,停止程序的执行。 【步骤一】 用EDIT编辑源程序,并以EXAM1.ASM为文件名存入磁盘。 程序清单如下: SSEG SEGMENT STACK STK DB 80H DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG HTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,07 HTOA1: ADD AL,30H RET HTOA ENDP BHTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 PUSH CX MOV CH,AL MOV CL,04 SHR AL,CL CALL HTOA MOV AH,AL MOV AL,CH CALL HTOA POP CX RET BHTOA ENDP DISASC PROCN EAR ;该子程序的功能是在光标处显示AL中的字符 PUSH AX

实验3-汇编语言程序上机过程

实验3 汇编语言程序上机过程 3.1 实验目的 (1)掌握常用工具软件EDIT,MASM,和LINK的使用。 (2)伪指令:SEGMENT ,ENDS,ASSUME,END, OFFSET,DUP. (3)利用INT 21H的1号功能实现键盘输入的方法。 (4)了解.EXE和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 3.2 实验类型 验证型实验 3.3 实验内容 data segment message DB 'THIS IS A SAMPLE PROGRAM OF KEY AND DISPLAY' DB 0DH, 0AH, 'PLEASE STRIKE THE KEY!', 0DH, 0AH,'$' data ends stack segment PARA STACK'STACK' DB 50 DUP(?) stack ends code segment assume CS:COE, DS:DATA, SS:STACK start: mov ax, data mov ds, ax mov dx, OFFSET MESSAGE mov ah, 9 INT 21h ; add your code here AGAIN: MOV AH,1 INT 21H CMP AL,61H JE ND CMP AL,61H JC ND CMP AL,74H JA ND AND AL,11011111B ND: MOV DL,AL MOV AH,2 INT 21H JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START

汇编语言上机实验指导书(不含源代码)

汇编语言上机实验指导书 一、概述 上机实验总学时为14学时,其中综合性实验为2学时。实验共有6项暂定为7次,每次2学时。 1.实验辅导的主要内容 实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。开始的实验介绍较细,后面的实验简要介绍。 2.实验的软硬件要求 关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。 3.加强实践能力的培养 实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括: 实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等; 开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。 对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。 实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性) 1.实验目的: (1) 熟悉汇编语言运行环境和方法 (2)了解如何使用汇编语言编制程序 (3) 熟悉DEBUG有关命令的使用方法 (4) 利用DEBUG掌握有关指令的功能 (5) 利用DEBUG运行简单的程序段 2.实验内容 (1)学会输入、编辑汇编语言程序 (2)学会对汇编语言程序进行汇编、连接和运行 (3)进入和退出DEBUG程序 (4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。 3.实验准备 (1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。 (2)准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。 (3) 编写一个程序:比较2个字符串所含的字符是否相同。若相同则显示’Match.’,否则显示’No match!’; (1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。 4.实验步骤 (1)在DOS提示符下,进入MASM目录。 (2)在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。 ①调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm ②用汇编程序masm对源程序汇编产生目标文件obj。例:masm abc 不断修改错误,直至汇编通过为止。 ③用连接程序link产生执行文件exe.例:link abc

8086汇编语言上机调试步骤

8086汇编语言上机调试步骤 1、在网络课堂-微机原理与接口技术-实验指导-汇编工具下载,下载汇编工具并解压,文件夹名为“masm”。 2、用鼠标点击“masm”文件夹。进入该文件夹后将看到 MASM.EXE, LINK.EXE , DEBUG.EXE3个文件进行复制操作。 3、用鼠标点击“我的电脑”再点击D: 盘,并在 D: 盘上建立新的“ MASM”文件夹,最后将上面的3个文件全部复制到该文件夹中。(注意实验所有的文件都放在该文件夹内) 4、用文本编辑软件UltraEdit-32、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源 文件的扩展各一定要是“.asm”如: example.asm 。(建议用记事本输入源程序,另存时,保持类型选择“所有文件”如图所示) 5、进入MS-DOS方式 ( 从开始>程序>附件>命令提示符) 或者(从程序 > 运行输入“cmd”回车,进入MS-DOS环境。

6、进入D:>MASM文件夹 7、显示MASM文件夹内所有文件“dir”命令 8、在 DOS 提示符下进行汇编、连接、动态调试等操作。 例如: 对源文件 example.asm 进行的操作

D:\MASM\MASM example.asm;汇编源程序操作 D:\MASM\LINK example.dbj;连接并生成扩展名为 .EXE 的可执行文件 D:\MASM\DEBUG example.exe;对可执行文件进行调试 9、要求掌握的调试命令(在 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“应用程序命令 10、应用例子 ;二进制到BCD转换(a.asm) ;将给定的一个二进制数,转换成二十进制(BCD)码 DATA SEGMENT RESULT DB 3 DUP(?) DATA ENDS CODE SEGMENT

汇编语言上机实验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后, (1) 编辑源程序(生成 .ASM (2) 汇编源程序(.ASM → .OBJ (3) 连接目标程序(.OBJ → .EXE (4) 调试可执行程序(使用调试程序Debug 调试生成的.EXE 文件) (5) 运行程序输出结果。 2、 Windows 环境下的汇编语言集成编程环境的使用 实验一 汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT 编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM 的使用; 4、熟练掌握连接程序LINK 的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2、软件环境:装有MASM 、DEBUG 、LINK 等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT 建立汇编语言源程序文件(ASM 文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

余敦辉《汇编语言》实验指导书实验1-实验3

《汇编语言》实验指导书

目录 实验一Debug命令的使用 (3) 实验二基本汇编指令的使用 (9) 实验三汇编语言程序的调试与运行 (13) 实验四系统功能调用程序的调试与运行………………错误!未定义书签。 实验五分支程序设计……………………………………错误!未定义书签。 实验六循环程序设计……………………………………错误!未定义书签。 实验七子程序设计………………………………………错误!未定义书签。 实验八高级汇编语言程序设计…………………………错误!未定义书签。 实验九I/O程序设计……………………………………错误!未定义书签。 实验十中断程序设计……………………………………错误!未定义书签。 实验十一综合程序设计 (38)

实验一Debug命令的使用 一、知识点 1、DEBUG简介 DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。在汇编语言程序调试中很常用。 DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。 DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。 DEBUG命令的使用注意问题: (1)字母不分大小写 (2)只使用十六进制数,但没有带后缀字母“H” (3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。 (4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。 2、Debug的调入和退出 以WIN7环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态: C:\Documents and Settings\lfy> 然后输入命令: >Debug 进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。 退出Debug的命令:Q 3、Debug常用命令 (1)汇编命令A,格式为: - A [地址] 功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。若不指定地址,则系统从默认的地址开始存放。按回车键退出汇编状态 应用:用于调试一条指令或几条指令组成的一个程序段。

汇编语言上机过程

第一步:编写程序 用记事本编写汇编语言程序,保存为.ASM 文件,保存时,保存类型选择“所有文件”。注意,应将汇编语言程序保存在包含MASM.EXE 及LINK.EXE 的目录下(本例中假定在C盘的MASM目录下,即“C:\MASM”)。 第二步:编译 进入DOS命令提示符环境。该环境的访问方法一:windows “开始”->“运行”,输入“cmd”),如下图: 访问方法二:windows “开始”->“程序”->“附件”->“命令提示符”,如下图所示:

进入DOS命令提示符方式: 用CD 命令进入MASM目录,如下图所示: (若个人的MASM目录在D盘下,可如下操作:)

回车后即进入存放有MASM.EXE LINK.EXE EX11.ASM 的目录D:\MASM : 现在开始用汇编程序MASM.EXE 编译汇编语言源程序EX11.ASM: 回车后开始编译:

若编译出现0处错误(如上图椭圆框内),则表示编译通过,正确生成EX11.OBJ文件: 接下来转入第四步。否则,若出现如下类似界面: 表示出现一处错误,该错误在EX11.ASM的第七行,错误为“出现未定义的符号AS”,则转入第三步。 第三步:编辑程序 用 EDIT.EXE 编辑出现错误的程序 EX11.ASM:

回车后,出现如下界面: 找到第7行,并修改相应错误。修改完成后,点击菜单“File”或用“ALT”回车打开“File”菜单,首先选择“Save”保存修改,然后选择“Exit”退出编辑状态: 重复如下编译过程,重新编译修改过的EX11.ASM,直至全部错误修改完成:

汇编语言上机实验

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM、DEBUG、LINK等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

汇编语言实验指导书.

汇编语言实验指导书纪平张雷编写 安徽工业大学计算机学院 二00四年三月 目录 实验一DEBUG的启动及其基本命令的使用 (2 实验二内存操作数及寻址方法 (6 实验三汇编语言程序的调试与运行 (8 实验四查表程序设计 (10 实验五系统功能调用 (12 实验六循环程序设计 (13 实验七分支程序设计 (15 实验八子程序设计 (18 实验九综合程序设计 (20 附录实验报告 (21 实验一DEBUG的启动及其基本命令的使用一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容:

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动 在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它须是执行文件(EXE,两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需 的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1汇编命令A,格式为: -A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机 器代码相继存放在从指定地址开始的存储器中。 (2反汇编命令U,有两种格式: 1-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上 一个U命令的最后一条指令的下一个单元开始显示32个字节。

汇编语言程序的上机过程

汇编语言的上机过程 汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。 1、建立源程序文件 建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。保存时,源程序文件的扩展名必须是ASM。 练习: (1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。(调用命令“C:\EDIT”进入EDIT 编辑器。) 源程序文件如下: DSEG SEGMENT MESSAGE DB'HOW DO YOU DO?',0DH,0AH,24H DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG BEGIN: MOV AX,DSEG MOV DS,AX MOV DX,OFFSET MESSAGE MOV AH,9 INT21H

MOV AH,4CH INT21H CSEG ENDS END BEGIN (2)编程计算1+2+3+……+100,和放在AX寄存器中,要求用循环实现。 对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。以下分别就两个版本的编译和连接的方法进行讲解。 如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。 操作: (1)在DOS下进入MASM5.0的目录,如C:\MASM5> (2)敲入命令:MASM HELLO 说明: .obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。 .lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。 .crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。 3、连接目标文件,生成执行文件HELLO.EXE, 操作:敲入命令LINK HELLO 说明: .EXE文件:可执行文件 .MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。

汇编语言上机试验指导

作实验2 【1】.有空加作实验【4】(1). 实验2 算术及位串处理程序 【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。 要求见书: 参考程序: data segment asc db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,4 rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h mov ah,4ch int 21h code ends end start 【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。 要求:(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。 参考书上例3.51,题目改为MESS2 定义为从键盘输入缓冲区,键盘输入缓冲区定义: mess2 DB 9,?,9 DUP(?) 例3.51 在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示‘N’。编制程序如下所示。

汇编语言上机实验一2015李中

实验报告 课程:汇编语言程序设计 专业班级:计算机科学与技术 学号: 姓名:李中 实验一、熟悉汇编语言上机环境 一、实验目的 熟悉在微机上建立、汇编、链接、调试和运行汇编语言程序的全过程 二、实验要求 1、学会使用EDIT建立汇编语言源程序文件 2、学会使用MASM将汇编语言源程序编译为目标程序的方法 3、学会使用LINK将目标程序链接为可执行程序的方法; 4、学会在DOS环境下和在DEBUG中运行程序 三、实验内容 1、编辑、汇编、链接执行下列程序。观察程序的执行结果。该程序的功能是将字符串 “HELLO WORLD”在屏幕上显示出来、 参考程序如下: DSEG SEGMENT DATA DB "HELLO WORLD!$"

DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA DX,DATA MOV AH,09H INT 21H MOV AH,4CH INT 21H CSEG ENDS END START 编辑: 汇编:

链接:

测试: 2、编辑、汇编、链接、执行下列程序。观察程序的执行结果。该程序的功能是:计算 放在DATA1和DATA2单元中的两个数据之和,结果在屏幕上显示出来。 参考程序如下: DSEG SEGMENT DATA1 DB 35H DATA2 DB 29H DSEG ENDS

CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DATA1 MOV AL,DATA2 PUSH AX MOV CL,4 SHR AL,CL ADD AL,30H CMP AL,39H JBE OK1 ADD AL,07H OK1: MOV DL,AL MOV AH,02H INT 21H POP AX AND AL,0FH ADD AL,30H CMP AL,39H JBE OK2 ADD AL,07H OK2: MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CSEG ENDS END START 编辑:

汇编语言程序设计实验指导

实验一汇编语言上机过程 一、上机前的软件准备: MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等) 文本编辑器(如:https://www.360docs.net/doc/7d17805044.html, , TURBO.EXE , TC.EXE , C.EXE 等) 汇编程序(如:MASM.EXE , ASM.EXE,TASM.EXE 等) 连接程序(如:LINK.EXE 等) 调试程序(如:DEBUG.EXE 等) 二、汇编程序建立过程: 通过 a.建立汇编源程序────→ b.编译为目标文件──┬─→d.连接为可执行文件 ↑↓ ↓ │ c.不通过,重新修改(语句错误)││ ├──────────────────────┘│ ↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓ └────────────────────────────←e运行 ↓正确 g.完成 三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立文件名.asm) 这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。 1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。 2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。 PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件) 这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程: 在DOS提示符下键入MASM filename回车 (注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM fi lename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名) 这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。MASM filename >filen (f ilen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。

相关文档
最新文档