汇编语言实验五子程序设计实验Word文档格式.docx

上传人:b****5 文档编号:20616697 上传时间:2023-01-24 格式:DOCX 页数:20 大小:105.17KB
下载 相关 举报
汇编语言实验五子程序设计实验Word文档格式.docx_第1页
第1页 / 共20页
汇编语言实验五子程序设计实验Word文档格式.docx_第2页
第2页 / 共20页
汇编语言实验五子程序设计实验Word文档格式.docx_第3页
第3页 / 共20页
汇编语言实验五子程序设计实验Word文档格式.docx_第4页
第4页 / 共20页
汇编语言实验五子程序设计实验Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

汇编语言实验五子程序设计实验Word文档格式.docx

《汇编语言实验五子程序设计实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言实验五子程序设计实验Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

汇编语言实验五子程序设计实验Word文档格式.docx

.段内调用与返回:

调用子程序指令与子程序同在一个段内。

因此只修改IP;

.段间调用与返回:

调用子程序与子程序分别在不同的段,因此在返回时,需同时修改

CS:

IP。

3.)子程序的现场保护与恢复

保护现场:

在子程序设计时,CPU内部寄存器内容的保护和恢复。

一般利用堆栈实现现场保护和恢复的格式:

过程名PROC[NEAR/FAR]

PUSHAX

PUSHBX.

PUSHDX

POPDX.

POPAX

3.子程序的参数传递方法

1.寄存器传递参数

这种方式是最基本的参数传递方式。

2.存储器单元传(变量)递参数

这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;

子程序运

行时到约定存储位置读取参数;

子程序执行结束后将结果也放在约定存储单元中。

3.用堆栈传递参数

利用共享堆栈区,来传递参数是重要的的方法之一。

B)字符、字符串输入输出知识要点:

在实际应用中,经常需要从键盘输入数据并将结果等内容显示到屏幕上,方便程序控制

及查看结果。

汇编语言的数据输入和输出分成两类,一是单个字符数据的输入输出,一是字

符串数据的输入输出。

都可以通过DOS功能调用来实现,下面就分别介绍下用来实现数据输

入输出的功能调用的使用方法。

1、单个字符输入

单个字符输入可以利用DOS的1号功能调用来完成,使用方法为:

MOVAH,1

INT21H

这两条语句执行后,光标会在屏幕上闪烁,等待输入数据,输入的数据以ASCII

码形式存储在AL寄存器中。

2、单个字符输出

单个字符输出可利用DOS2号功能调用来完成,使用方法为:

MOVDL,’?

MOVAH,2

单个字符输出需要把要输出字符的ASCII码放在DL寄存器中。

3、字符串输入

从键盘输入一串字符串可以利用DOS的10号功能调用来完成,使用方法为:

BUFDB50;

预定义可以输入的最大字符个数

DB?

;

实际输入字符个数,根据输入自动统计

DB50DUP(?

);

存放输入字符串数据缓冲区

LEADX,BUF

MOVAH,10

4、字符串输出

字符串输出可由DOS9号功能调用来完成,使用方法为:

STRINGDB‘HELLO$’

LEADX,STRING

MOVAH,9

C)表的处理知识要点:

表的处理在实际数据处理中应用较为广泛,主要有排序、搜索、插入和删除等操作。

一些常用的冒泡法、对分搜索法等需要掌握。

四、实验内容与步骤

1、从键盘输入一串字符串(显示提示)到内存中,在该字符串的某一个指定位置,插入某

一字符或删除某一字符,并显示操作后的字符串。

2、编写程序把从键盘输入的四位十六进制数,转换为十进制形式在屏幕上打印出来。

3、从键盘输入(显示提示)十个2位十进制数(正数)到内存中,按从小到大排序,然后

把该数以十六进制形式在屏幕上打印出来。

4、英文人名排序。

从终端键入20个人名,当所有人名都键入后,按字母上升的次序将人名

排序,并在屏幕上显示已经排好序的人名。

注意:

以上各题要求用子程序方法实现,每个题目至少包含2个子程序。

涉及到初始数据

的,同学们自行给出多组数据,反复加以验证各题程序。

五、实验要求与提示

1、实验要求

(1)画出各程序流程图;

(2)列出程序清单,加上适量注释;

(3)回答思考问题;

(4)记录实验结果;

(5)完成实验报告(实验材料上的内容简写,自己的工作要详尽)。

六、思考与练习以及测评标准

1.字符串在内存中是如何存储的?

2.屏幕有多个字符串显示时,如何换行?

七、程序流程图

八、实验结果

九、思考题

1.以8位ASCII码的形式连续存储

2.先输出换行符,然后输出回车符

十、程序代码

datassegment

buf4db460dup('

$'

bp4dw20dup(0)

markdb'

@@'

num41dw20

num42dw19

num3db20dup(0)

num3tdb10dup(0)

num31dw10

num32dw9

num2db0,0,0,0

num22dw0

tempiodb0

tempdw0

tabdb'

0123456789abcdef'

tip1db'

Pleaseinput:

tip2db'

Pleaseinput10DECnumeralwithspace:

buf1db20

db?

db20dup('

num1db0

num1tdb3

db2dup(0)

temp1db'

'

datasends

stackssegment

stackdw32dup(0)

stacksends

codessegment

assumeds:

datas,ss:

stacks,cs:

codes

start:

movax,datas

movds,ax

moves,ax

movax,stacks

movss,ax

;

1start

leasi,tip1

callputs

callnewline

leasi,buf1

callgets

leasi,num1t

incsi

movah,ds:

[si]

moval,ds:

movbl,'

0'

subah,bl

subal,bl

movbl,al

moval,ah

movah,0

movcl,10

mulcl

addal,bl

movnum1,al

callinput

movbl,tempio

movtemp1,bl

movcx,0

movcl,num1

deccl

jzl11

l1:

movtempio,al

calloutput

loopl1

l11:

moval,temp1

cmpal,0dh

jzl12

decsi

l12:

1end

2start

movax,0

leasi,num2

moval,tempio

subal,'

movds:

[si],al

leasi,num2

movcx,4

movdx,0ah

l2:

cmpds:

[si],dl

jbl21

subal,7

l21:

loopl2

shlah,cl

movbl,ds:

addah,bl

shlal,cl

movnum22,ax

1

movdx,0

movcx,2710h

divcx

movtemp,dx

addax,'

movax,temp

2

movcx,3e8h

3

movcx,64h

4

movcx,0ah

5

2end

3start

leasi,tip2

leasi,num3

movcx,20

l3:

movdl,'

cmpdl,tempio

jzl31

deccx

jzl32

l31:

jmpl3

l32:

leadi,num3t

movcx,10

l33:

movdl,10

muldl

addal,ds:

moves:

[di],al

incdi

loopl33

sort

sort31:

leasi,num3t

movax,9

movnum32,ax

sort32:

cmpal,ds:

jsskip31

xchgal,ds:

[si-1],al

skip31:

movcx,num32

decnum32

loopsort32

movcx,num31

decnum31

loopsort31

movnum31,10

l34:

callprintnumb

callspace

loopl34

3end

4start

leasi,buf4

leadi,bp4

input

l4:

moval,20

movdx,si

adddx,2

[di],dx

addsi,23

loopl4

l41:

leasi,bp4

movax,19

movnum42,ax

l42:

movdi,ds:

[si+2]

movtemp,si

movax,ds:

movsi,ax

repecmpsb

jsskip41;

不需修改

movsi,temp;

修改

xchgax,ds:

[si],ax

skip41:

movsi,temp

movcx,num42

movnum42,cx

inccx

loopl42

movcx,num41

movnum41,cx

loopl41

ouput

l43:

movtemp,cx

movsi,es:

[di]

movcx,temp

loopl43

4end

Q:

movah,4ch

int21h

printnumb:

movcl,4

shral,cl

leabx,tab

addbx,ax

movdl,ds:

[bx]

movah,2

movcl,0fh

andal,cl

ret

printnum:

;

outputtheASCIIintempW

shrah,cl

andah,0fh

andal,0fh

gets:

movah,10

pgets:

movcl,ds:

movch,0

lpgets:

jzpend

looplpgets

pend:

puts:

movah,9

input:

movah,1

newline:

movah,2

movdl,0dh

movdl,0ah

space:

output:

movdl,tempio

codesends

endstart

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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