汇编语言上机实验报告一文档格式.docx

上传人:b****2 文档编号:14776047 上传时间:2022-10-24 格式:DOCX 页数:19 大小:317.93KB
下载 相关 举报
汇编语言上机实验报告一文档格式.docx_第1页
第1页 / 共19页
汇编语言上机实验报告一文档格式.docx_第2页
第2页 / 共19页
汇编语言上机实验报告一文档格式.docx_第3页
第3页 / 共19页
汇编语言上机实验报告一文档格式.docx_第4页
第4页 / 共19页
汇编语言上机实验报告一文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

汇编语言上机实验报告一文档格式.docx

《汇编语言上机实验报告一文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言上机实验报告一文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

汇编语言上机实验报告一文档格式.docx

操作提示:

利用TD.EXE调试程序时,应先单步执行各个语句,每执行一条语句,都应观看数据段中的内容和相应寄放器的转变。

二实验要求

把握大体的程序设计框架和方式、熟悉经常使用指令的用法、熟悉DOS功能挪用、进一步把握TD的利用方式。

三寄放器分派和变量概念说明

此题利用LOOP做循环,一一将BUF中的字节复制到NEW_BUF中。

1存储单元分派

BUF:

寄存初始串’howareyou’

NEW_BUF:

寄存复制的字符串

2寄放器分派

BX:

BUF的偏移地址

BP:

NEW_BUF的偏移地址

CX:

记录循环次数

SI,DI:

别离用作BUF和NEW_BUF的变址寄放器

AX:

临时寄放器

四流程图

五源代码

DATASEGMENT

BUFDB'

N=$-BUF

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETBUF

MOVBP,OFFSETNEW_BUF

MOVCX,N

MOVSI,CX

MOVDI,0

DECSI

LINE:

MOVAL,[BX+DI]

MOVDS:

[BP+SI],AL

INCDI

LOOPLINE

CODEENDS

ENDSTART

六运行结果

用td调试程序,能够看到在数据段里NEW_BUF已经寄存了倒置的BUF.

实验二

一题目

假设数据段概念如下:

DATASEGMENT

STRINGDB‘ThePersonalComputer&

TV’

试用字串操作等指令编程完成一下功能:

(1)把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中。

(2)

(3)检查该字符串是不是有‘&

’符,假设有那么用空格符将其替换。

(4)把字符串大写字母传送到附加段中CAPS开始的单元中,其余字符传到以CHART开始的单元中。

然后将数据段中存储上述字符串的单元清零。

学会熟练适用字符串操作指令。

此题利用字符串操作指令MOVSB,CMPSB,SCASB等实现字符串的传递,比较,搜索等功能。

1变量概念说明

(1)关于第一问,数据段中STRING用于寄存初始字符串,附加段中GET_CHAR用于寄存复制后的字符串。

(2)关于第二问,附加段中COM用于寄存待比较的字符串’TheComputer’。

(3)关于第三问,没有效到附加段,只是用到了数据段中的初始字符串STRING。

(4)关于第四问,附加段中CAPS用于寄存大写字母,CHART用于寄存其他字母。

SI:

寄存源串的偏移地址。

DI:

寄存目串的偏移地址。

CX:

寄存循环计数值。

AX,BX:

临时利用的的寄放器。

四流程图

(1)

(3)

利用STOS传到CAPS

CX为0?

结束

交换BX,DI

(4)

STRINGDB'

ThePersonalComputer&

TV'

NEQU$-STRING

HELLOSEGMENT

GET_CHARDB100DUP(0)

CAPSDB100DUP(0)

CHARTDB100DUP(0)

COMDB'

TheComputer'

COMPAREDB0

NUMBERDB0

HELLOENDS

DATA,ES:

HELLO

MOVAX,HELLO

MOVES,AX

LEASI,STRING

LEADI,GET_CHAR

CLD

REPMOVSB

MOVBL,0

CMPCX,12

JNELINEB

MOVAL,1

LEADI,COM

MOVBX,CX

REPECMPSB

JNELINEA

JMPLINEC

LINEA:

MOVAL,0

SUBBX,CX

LINEB:

LINEC:

MOVCOMPARE,AL

MOVNUMBER,BL

MOVAL,'

&

'

LEADI,STRING

REPNESCASB

JZCHANGE

JMPLINED

CHANGE:

MOVBYTEPTRDS:

[DI-1],'

'

LINED:

LEADI,CAPS

LEABX,CHART

LINEF:

LODSB

CMPAL,41H

JBLINEG

CMPAL,5AH

JALINEG

STOSB

MOVBYTEPTR[SI-1],0

JMPLINEH

LINEG:

XCHGBX,DI

LINEH:

LOOPLINEF

(1)运行后将原字符串放在了附加段偏移地址为0000的区域,如下

(2)由于两字符串长度为零,因此不相等,比较次数为零。

(3)运行后已将&

替换为空格,如下

(4)运行后已将大写字母放在一路,其他字母放在另一区域,如下

实验三

编程将AX寄放器中的内容以相反的顺序传送到DX寄放器中,并要求AX中的内容不被破坏,然后统计DX寄放器中1的个数是多少。

熟练把握移位指令的利用。

此题先将AX中的数据循环右移,每移一名,都将移出位从DX右端移入,如此移动16次后DX即是AX的倒转的数。

数据段中的PRINT,HELLO,KITTY是用来寄存一些用于输出的字符串。

用于寄存原始数据

DX:

用于寄存倒转后的数据

BL:

记录DX中1的个数

PRINTDB'

Thenumberof1inDXis:

$'

HELLODB0DH,0AH,'

KITTYDW0

CODESEGMENT

MOVAX,34H

MOVCX,16

RORAX,1

JCLINEB

INCBL

RCLDX,1

LOOPLINEA

MOVKITTY,DX

LEADX,PRINT

MOVAH,9

INT21H

MOVDL,BL

ADDDL,30H

MOVAH,2

LEADX,HELLO

MOVAX,4C00H

六运行结果

程序运行后能够看到DX中是AX的反转,如下所示

而且将DX中的1的个数输出,如以下图中最后一行:

实验四

将以BUF为首地址的字节存储区中的既能被2整除也能被7整除的无符号整数的个数(假定≤9)显示出来,同时对应的显示它们别离对应的地址偏移量。

此题将0-255中能被2和7整除的数列表,关于需要检测的数,将其和该表一一对照,可知其是不是能被2和7的整除。

1变量概念说明

数据段中STAND用于寄存0-255中能被2和7整除的数,NUMBER用于寄存待检测的数。

其他变量用于显示输出。

用于寄存目的串偏移地址

用于记录循环次数

BX,DX,AX:

临时利用

NUMBERDB0,7,14,25,72,56,70

NAEQU$-NUMBER

STANDDB0,14,28,42,56,70,84,98,112,126,140,154,168,182,196,210,224,238,252

NBEQU$-STAND

PRINTADB'

Number'

'

PRINTBDB'

Address'

PRINTCDB0DH,0AH,'

LEADX,PRINTB

LEADX,PRINTC

MOVCX,NA

MOVBX,0

MOVSI,0

MOVAL,[BX]

LEADI,STAND

PUSHCX

MOVCX,NB

JZLINEB

INCSI

POPCX

INCBX

LEADX,PRINTA

INT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1