实验3分支和循环程序设计报告.docx

上传人:b****8 文档编号:9157865 上传时间:2023-02-03 格式:DOCX 页数:13 大小:308.33KB
下载 相关 举报
实验3分支和循环程序设计报告.docx_第1页
第1页 / 共13页
实验3分支和循环程序设计报告.docx_第2页
第2页 / 共13页
实验3分支和循环程序设计报告.docx_第3页
第3页 / 共13页
实验3分支和循环程序设计报告.docx_第4页
第4页 / 共13页
实验3分支和循环程序设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验3分支和循环程序设计报告.docx

《实验3分支和循环程序设计报告.docx》由会员分享,可在线阅读,更多相关《实验3分支和循环程序设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

实验3分支和循环程序设计报告.docx

实验3分支和循环程序设计报告

实验3分支和循环程序设计

实验目的:

熟练掌握分支和循环结构的设计方法,熟悉跳转和循环指令的使用方法。

实验要求:

按照要求编写程序,调试运行。

实验内容:

1、编写程序实现下面的算法:

if

then

lowerCount+1;

else

if(ch≥’A’)and(ch≤’Z’)

then

upperCount+1

else

otherCount+1;

endif

endif

其中ch调用ReadChar输入,lowerCount,upperCount和otherCount的值用WriteUDecByte显示。

源代码

.386

.modelflat,stdcall

include\masm32\include\io32.inc

.stack4096

.data

lowercountByte?

uppercountByte?

othercountByte?

prompt1byte"Inputastring(if(#)end)",0dh,0ah,0

prompt2byte"outputthenumber",0dh,0ah,0

prompt3byte"thelowercountnumber:

",0dh,0ah,0

prompt4byte"theuppercountnumber:

",0dh,0ah,0

prompt5byte"theothercountnumber:

",0dh,0ah,0

bufbyte80dup(?

.code

start:

writestringprompt1

readstringbuf

leaedi,buf

again:

moval,[edi]

cmpal,'#'

jzdone

cmpal,'A'

jbother

cmpal,'Z'

jbeupper

cmpal,'a'

jbother

cmpal,'z'

jbelower

jmpother

lower:

inclowercount

incedi

jmpagain

upper:

incuppercount

incedi

jmpagain

other:

incothercount

incedi

jmpagain

done:

writestringprompt2

writecrlf

writestringprompt3

writeUDecBytelowercount

writecrlf

writestringprompt4

writeUDecByteuppercount

writecrlf

writestringprompt5

writeUDecByteothercount

ret

endstart

实验结果

结果1

结果2

2、编写程序从键盘输入一系列有符号数,找出其中的最大数和最小数,显示运行结果。

建议算法如下:

显示“Firstnumber?

”;

调用ReadSDecDword输入双字有符号数;

minimum:

=number;

maximum:

=number;

while(显示“Anothernumber?

(YorN)”)loop

if(输入Y)then

调用ReadSDecDword输入双字有符号数;

if(number

then

minimum:

=number;

endif

if(number>maximum)

then

maximum:

=number;

endif

endwhile

源代码:

.386

.modelflat,stdcall

include\masm32\include\io32.inc

.stack4096

.data

Adword?

Bdword?

;maxdword?

ybyte?

prompt1byte"Firstnumber?

",0

prompt2byte"Anothernumber?

(YorN)",0

prompt3byte"Inputnumber:

",0

prompt4byte"MAXnumberis:

",0

prompt5byte"MINnumberis:

",0

.code

start:

WriteStringprompt1

ReadSDecDwordA

movedx,A;edx存储最大数

movebx,edx;ebx存储最小数

again:

WriteStringprompt2

ReadChary;判断是否结束

cmpy,59h

jneL

WriteStringprompt3

ReadSDecDwordB

cmpB,ebx;ebx>B,movebx,Bebx<=B,jlL1

jlL1

cmpB,edx;eax>=B,继续执行eax

jgenext1

jmpagain;当都不符合时候,跳转到开始

L1:

movebx,B

next:

loopagain;循环

next1:

movedx,B

;movmax,edx

jmpnext

L:

WriteStringprompt4

WriteSDecDwordedx

Writecrlf

WriteStringprompt5

WriteSDecDwordebx

ret

endstart

实验结果

结果1

结果2

结果3

3、编写程序将EAX的内容转换为二进制字符串

实验代码

.386

.modelflat,stdcall

include\masm32\include\io32.inc

.stack4096

.data

BinStrbyte32dup(50),0

.code

start:

movecx,32

movebx,offsetBinStr

again:

shleax,1

jcnext1

movbyteptr[ebx],'0'

jmpnext

next1:

movbyteptr[ebx],'1'

next:

incebx

dececx

jnzagain

writeBinbyteBinStr

ret

endstart

实验结果

4、编写程序将二进制字符串表示的数据存入EAX寄存器

实验代码

.386

.modelflat,stdcall

include\masm32\include\io32.inc

.stack4096

.data

adword?

stringbyte"10101100100101010101010101010101"

.code

start:

movecx,32

movebx,offsetstring

xoreax,eax

again:

xoredx,edx

movdl,[ebx]

shledx,31

shldeax,edx,1

incebx

mova,eax

writecrlf

writeHexDworda

loopagain

ret

endstart

实验结果

1、使用二进制输出eax每一步的内容

writeBinDworda

2、使用十进制输出eax每一步的内容

writeUDecDworda

3、使用十六进制输出eax每一步的内容

writeHexDworda

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

当前位置:首页 > 总结汇报 > 学习总结

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

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