1、设计型综合型创新型实验目的或要求实验目的掌握80X86 32位汇编语言程序设计的基本步骤,分析问题,确立算法。根据程序算法流程选择合适的指令编制汇编语言源程序。要求(1)程序要结构化:简明、易读和易调试。 执行速度较快且占用存储空间较少。原理(算法流程)题目:输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符。.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.h ; header file for input/outputcr EQU 0dh ; carriage return
2、characterLf EQU 0ah ; line feed.STACK 4096 ; reserve 4096-byte stack.DATA prompt1 BYTE This program will output three character ,cr,lf BYTE Enter a character : , 0label1 BYTE cr, Lf, The three character is char3 BYTE ? BYTE cr, Lfchar1 BYTE ? BYTE cr,lfchar2 BYTE ? BYTE cr,lf,0char4 byte 5 dup (?(写不
3、完时,可另加附页。组内分工可选.CODE _start: output prompt1 input char4,3 ; read ASCII characters mov al,char4 mov char1,al inc al mov char2,al dec al mov char3,al output label1 INVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start END 结果析及心得体会要掌握将字符转换成ASCII码,然后根据ASCII码的加减得到输入字符的前一个和后一个字符成绩评定教师签名: 年 月 日备注:源代
4、码附后,源代码要求有注释说明分支程序设计目的掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧。(1)如何产生条件 (2)如何对条件进行判断 (3)如何实现分支计算给定函数值.DATA ; reserve storage for datastring BYTE 20 DUP (?prompt BYTE This program is to judge the sign of two number Enter the Value for number:,0result BYTE cr, Lf, The result is value BYTE 6 D
5、UP (? BYTE cr, Lf, 0.CODE ; start of main program code mov ecx,2 mov ebx,0 Done: output prompt ; prompt for first number input string, 20 ; atod string ; convert to integer cmp eax,0 ; store in memory jnl L1 jmp L2L1: inc ebx L2: dec ecx cmp ecx,0 je endFor jmp Done endFor: dec ebx dtoa value,ebx ou
6、tput resultPUBLIC _start ; make entry point publicEND ; end of source code要掌握分支程序的实现,考虑到等于0的时候分支的划分,输出正确的函数值循环程序设计掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧。(1)置循环参数的初值 (2)循环体构成 (3)如何实现循环控制用表格形式显示ASCII字符 reserve storage forThis program is to display the character of ASCII from 10h to 100h ,cr,lf,0p
7、rompt2 BYTE lf,0value BYTE ? BYTE mov value ,10h mov eax,10h mov ecx ,16 ; whilepos: cmp eax,100h jg endwhile output value inc value inc eax Loop whilepos forcount: output prompt2 mov ecx,16 jng whilepos endwhile:显示ASCII码的所有字符时应是100h,而不是10h,否则会导致输出字符少子程序设计掌握子程序设计的原理和方法,重点掌握子程序编写和调用的过程以及堆栈操作和参数以及局部变量
8、的概念。(1)编写子程序(2)在主程序中调用子程序(3)实现主程序与子程序的参数传递求X的阶乘值.STACK 40960 ;prompt1 BYTE This program is to calculate a numbers factorial Please input a number that is from 0 to 10 result BYTE The answer is value BYTE 11 DUP (? input string,11 atod string cmp eax,0 jl L1 cmp eax,10 jg L1 push eax call FACT FACT P
9、ROC NEAR32 push ebp mov ebp,esp mov eax ,ebp+8 mov ecx,eax je L2 cmp eax,1 forcount : mul ecx loop forcount jmp L3 mov eax,1 L3: dtoa value,eax pop ebp ret 4 FACT ENDP串操作指令的使用掌握串操作指令的用法,注意DF标识位以及源串、目标串的存储和改变。结合前面所学知识,综合进行串操作指令的使用。设有一字符串已存放在STRBUF为首址的数据区中,编一程序找出其中的.字符,并将其存放地址输出。.DATAThis program will
10、 check a . from a string ,and output the position of the . Enter a string :,cr,Lf, 0string BYTE 80 DUP (?answer1 BYTE The string not exist the character .,cr,Lf,0answer2 BYTE cr,lf,The postion of the . is :Pos BYTE 6 DUP (?),0.CODE input string, 80 ; read string lea eax,string call strposstrpos PROC NEAR32 push edi mov edi,ebp+8 mov ebx,-1 mov al,. mov ecx,0 cld Forcount: cmp BYTE PTR edi,0 je endfor inc ecx scasb jne Forcount Found: mov ebx,ecx dtoa Pos,ebx output answer2 jmp Forcount endfor: cmp ebx,0 jg L2 L1 : output answer1 L2 : pop edi strpos ENDPPUBLIC _startEND
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1