您好,欢迎来到客趣旅游网。
搜索
您的当前位置:首页汇编第次上机实验报告

汇编第次上机实验报告

来源:客趣旅游网

汇编第次上机实验报告

汇编语言上机实验报告

时间:2013-4-19,19:00-21:30

地点:南一楼803室

实验人员:王

一、题目

从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH!”,不相等显示“NOMATCH!”。

二、实验要求

(1)使用10号功能调用输入字符串;

(2)使用9号功能调用输出提示信息。

三、寄存器分配和变量定义说明

1.存储单元分配

2.寄存器分配

四、流程图

五、源程序

.386

DATASEGMENTUSE16

BUF1DB50

DB50DUP(0)

BUF2DB50

DB50DUP(0)

CRLFDB0DH,0AH,'

SENT2DB"NOMATCH!

STACKSEGMENTUSE16STACKDB300DUP(0)

STACKENDS

CODESEGMENTUSE16

ASSUMEDS:DATA,SS:STACK,CS:CODE

START:MOV

L1:MOV

L2:MOV

L3:MOV

E_IT:MOV

CODEENDS

六、实验步骤A_,DATADS,A_D_,BUF1AH,1021HD_,CRLFAH,921HD_,BUF2AH,1021HD_,CRLFAH,921HBL,BUF1+1BH,0DL,BUF2+1DH,0C_,B_D_,B_L1L2D_,OFFSETSENT2AH,921HE_ITDL,BUF1+2BL,BUF2+2DL,BLL1BUF1BUF2C_L2L3D_,OFFSETSENT1AH,921HE_ITAH,4CH21HSTART

1.使用编辑程序XXX录入源程序,存盘文件名为XXX。

2.使用MASM6.0汇编源文件。即MASMT1;

3.观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。

4.使用连接程序XXX将汇编生成的XXX文件连接成执行文件。

即LINKT1;

5.若连接时报错,则依照错误信息修改源程序。之后重新汇编和连接,直至不再报错并生成XXX文件。

6.执行该程序。即在命令行提示符后输T1后回车,观察执行现象。

7.使用XXX观察T1的执行情况。即TDT1回车

(1)观察CS、IP、SP、DS、ES、SS的值。

(2)单步执行开始2条指令,观察DATA的实际值,以及DS的改变情况。

(3)观察DS:0开始数据区,找到各变量在数据段中的位置和值。

七、实验记录(包括实验条件、输入/输出、错误和修改等信息的记录)

八、体会

一、题目

编写一个向用户提供指定字符串的ASCII码的程序。

二、实验要求

若用户需要知道某个字符的ASCII码,则从键盘上键入该字符,此时程序

调用子程序RADI_将该字符的ASCII码按十六进制和十进制输出。例如:THEASCIICODEOFAIS41H(65D)

三、寄存器分配和变量定义说明

1.存储单元分配

2.寄存器分配

四、流程图

五、源程序

.386

DATASEGMENTUSE16

SENT1DB"THEASCIICODEOF

SENT2DB"IS

BUFDB15DUP(0)

DATAENDS

STACKSEGMENTUSE16STACK

DB200DUP(0)

STACKENDS

CODESEGMENTUSE16

ASSUMEDS:DATA,SS:STACK,CS:CODE

START:MOVA_,DATA

MOVDS,A_

LEAD_,OFFSETSENT1

MOVAH,9

INT21H

MOVAH,1

INT21H

MOVCL,AL

CMPAL,0DH;遇到回车结束程序JZE_IT

LEAD_,OFFSETSENT2

MOVAH,9

INT21H

MOVEA_,EC_

MOVEB_,16

LEASI,BUF

CALLRADI_;调用子程序显示十六进制MOVBYTEPTR[SI],'H'

MOVBYTEPTR[SI+1],'

LEAD_,BUF

MOVAH,9

INT21H

MOVDL,'';显示空格

MOVAH,2

INT21H

MOVDL,'(';显示左括号'('

MOVAH,2

INT21H

MOVEA_,EC_

MOVEB_,10

LEASI,BUF

CALLRADI_;调用子程序显示十进制MOVBYTEPTR[SI],'D'

MOVBYTEPTR[SI+1],'

LEAD_,BUF

MOVAH,9

INT21H

MOVDL,')'

MOVAH,2

INT21H

JMPE_IT

RADI_PROC

PUSHC_

PUSHED_

LOP1:_ORED_,ED_

DIVEB_

PUSHD_

INCC_

OREA_,EA_

JNZLOP1

LOP2:POPA_

CMPAL,10

JBL1

ADDAL,7

L1:ADDAL,30H

MOV[SI],AL

INCSI

LOOPLOP2

POPED_

POPC_

RADI_ENDP

E_IT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

六、实验步骤;显示左括号(

1.使用编辑程序XXX录入源程序,存盘文件名为XXX。

2.使用MASM6.0汇编源文件。即MASMT2;

3.观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。

4.使用连接程序XXX将汇编生成XXX文件连接成可执行文件。即LINKT2;

5.若连接时报错,则依照错误信息修改源程序。之后重新汇编和连接,直至不再报错并生成XXX文件。

6.执行该程序。即在命令行提示符后输T1后回车,观察执行现象。

7.使用XXX观察T1的执行情况。即TDT1回车

(1)观察CS、IP、SP、DS、ES、SS的值。

(2)单步执行开始2条指令,观察DATA的实际值,以及DS的改变情况。

(3)观察DS:0开始数据区,找到各变量在数据段中的位置和值。

七、实验记录(包括实验条件、输入/输出、错误和修改等信息的记录)

八、体会

一、题目

输入一个字符(0–9之间),输出其对应的英文单词。例如:输入1,则输出one.

二、实验要求

在输出字符串时,不允许使用分支语句(转移指令)

三、寄存器分配和变量定义说明

1.存储单元分配

2.寄存器分配

四、流程图

五、源程序

.386

DATASEGMENTUSE16

INPUTDB"PLEASEINPUT_(0~9):

ENGDB

"ZERO

INERRDB0AH,0DH,"INPUTERROR!TRYAGAIN

CRLFDB0DH,0AH,'

DATAENDS

STACKSEGMENTUSE16STACK

DB250DUP(0)

STACKENDS

CODESEGMENTUSE16

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVA_,DATA

MOVDS,A_

NE_T:MOVD_,OFFSETINPUT

MOVAH,9

INT21H

MOVAH,1

INT21H

CMPAL,48

JBERROR

CMPAL,57

JAERROR

ANDAL,0FH

MOVB_,OFFSETNUM

ADDBL,AL

ANDBH,00H

MOVSI,DS:[B_]

MOVB_,OFFSETENG

LEAD_,CRLF

MOVAH,9

INT21H

LEAD_,[B_][SI]

ANDDH,00H

MOVAH,9

INT21H

JMPE_IT

ERROR:

LEAD_,CRLF

MOVAH,9

INT21H

MOVD_,OFFSETINERR

MOVAH,9

INT21H

JMPE_IT

E_IT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

六、实验步骤

1.使用编辑程序XXX录入源程序,存盘文件名为XXX。

2.使用MASM6.0汇编源文件。即MASMT3;

3.观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。

4.使用连接程序XXX将汇编生成的XXX文件连接成执行文件。即LINKT3;

5.若连接时报错,则依照错误信息修改源程序。之后重新汇编和连接,直至不再报错并生成XXX文件。

6.执行该程序。即在命令行提示符后输T3后回车,观察执行现象。

7.使用XXX观察T3的执行情况。即TDT3回车

(1)观察CS、IP、SP、DS、ES、SS的值。

(2)单步执行开始2条指令,观察DATA的实际值,以及DS的改变情况。

(3)观察DS:0开始数据区,找到各变量在数据段中的位置和值。

七、实验记录(包括实验条件、输入/输出、错误和修改等信息的记录)

八、体会

Copyright © 2019- kqyc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务