循环结构程序设计汇编语言.docx

上传人:b****5 文档编号:11886735 上传时间:2023-04-08 格式:DOCX 页数:9 大小:95.39KB
下载 相关 举报
循环结构程序设计汇编语言.docx_第1页
第1页 / 共9页
循环结构程序设计汇编语言.docx_第2页
第2页 / 共9页
循环结构程序设计汇编语言.docx_第3页
第3页 / 共9页
循环结构程序设计汇编语言.docx_第4页
第4页 / 共9页
循环结构程序设计汇编语言.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

循环结构程序设计汇编语言.docx

《循环结构程序设计汇编语言.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计汇编语言.docx(9页珍藏版)》请在冰豆网上搜索。

循环结构程序设计汇编语言.docx

循环结构程序设计汇编语言

 

汇编语言实验报告

 

实验名称:

循环结构程序设计

姓名:

学号:

班级:

一、实验内容

1.用多种循环方法实现1+2+3+…+20的程序(至少二种方法);

2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入;(选做)

3、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。

4、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。

二、实验目的

1.掌握循环程序的结构。

2.掌握循环程序的设计、编写及调试方法。

3.掌握循环程序设计的基本方法。

主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。

3、实验结果

1、将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT开始的两个字存储单元中。

实验代码:

(1.ASM1.OBJ1.EXE)

datasegment

buffdw6,35,99,17,80,69,50,33

addr1dw8dup(?

addr2dw8dup(?

resultdw0,0

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,8d

movsi,0

movdi,0

movbx,0

movdx,0

L1:

testbuff[si],0001h

jeL2

movax,buff[si]

movaddr2[bx],ax

addsi,2

addbx,2

incdl

deccx

jmpL1

L2:

movax,buff[si]

movaddr1[di],ax

adddi,2

addsi,2

incdh

deccx

jmpL1

movsi,0

movbyteptrresult[si],dh

addsi,2

movbyteptrresult[si],dl

codeends

endstart

运行结果如下:

2、不利用乘法指令实现乘法的程序

代码如下:

(2.ASM2.OBJ2.EXE)

datasegment

xdw30d

ydw10d

dataends

codesegment

assumecs:

code,ds:

data

start:

pushds

subax,ax

pushax

movax,data

movds,ax

movcx,x

movbx,y

movax,0

L1:

addax,bx

loopL1

movdx,ax

movah,2

int21h

codeends

endstart

运行结果如下:

3、用多种循环方法实现1+2+3+…+20的程序(至少二种方法)

代码1:

(31.ASM31.OBJ31.EXE)

DATASEGMENT

XDW0D

YDW20D

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVBX,X

MOVCX,Y

MOVAX,0

L1:

INCBX

ADDAX,BX

LOOPL1

MOVDX,AX

MOVAH,2

INT21H

CODEENDS

ENDSTART

运行结果1如下:

(结果存于DX寄存器中)

实验代码2如下:

(32.ASM32.OBJ32.EXE)

DATASEGMENT

YDW20D

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVCX,Y

MOVAX,0

MOVBX,0

L1:

INCBX

ADDAX,BX

CMPBX,20

JNZL1

MOVDX,AX

MOVAH,2

INT21H

CODEENDS

ENDSTART

运行结果2如下:

(实验结果存于DX寄存器中)

4、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入

实验代码如下:

(4.ASM4.OBJ4.EXE)

codesegment

assumecs:

code

start:

movah,1

int21h

cmpal,0dh

jeexit

cmpal,'0'

jbstart

cmpal,'9'

jbeoutput1

cmpal,'A'

jbstart

cmpal,'Z'

jbeoutput

cmpal,'a'

jbstart

cmpal,'z'

jbeoutput

output1:

movdl,al

movah,2

int21h

jmpstart

output:

movah,02h

movdl,'c'

int21h

jmpstart

exit:

movah,4ch

int21h

codeends

endstart

运行结果如下:

5、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。

实验代码如下:

(5.ASM5.OBJ5.EXE)BX寄存器中的测试数据位3132H

CODESEGMENT

ASSUMECS:

CODE

START:

MOVBX,6162H

SUBBX,2020H

MOVDL,BL

MOVAH,02

INT21H

MOVBL,BH

MOVDL,BL

MOVAL,02

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

运行结果如下图:

6、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。

实验代码如下:

(6.ASM6.OBJ6.EXE)测试数据为1EH,3DH,34H,98H

DATASEGMENT

ADDRDB1EH,3DH,34H,98H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

MOVDI,OFFSETADDR

STEP:

MOVAL,[DI]

ADDDI,1

MOVBL,AL

MOVDL,AL

MOVCL,4

SHRDL,CL

CMPDL,9

JBENEXT1

ADDDL,7

NEXT1:

ADDDL,30H

MOVAH,2

INT21H;显示高位ASCII码

MOVDL,BL

ANDDL,0FH

CMPDL,9

JBENEXT2

ADDDL,7

NEXT2:

ADDDL,30H

MOVAH,2

INT21H;显示低位ASCII码

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

当前位置:首页 > 考试认证 > 公务员考试

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

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