汇编语言实验指导-刘辉.doc_第1页
汇编语言实验指导-刘辉.doc_第2页
汇编语言实验指导-刘辉.doc_第3页
汇编语言实验指导-刘辉.doc_第4页
汇编语言实验指导-刘辉.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计实验手册编者:刘辉目录实验项目一汇编语言编程基础1实验一熟悉和掌握debug的基本操作1实验二构建汇编语言编程环境7实验项目二简单程序14实验三循环程序设计14实验四分支程序设计17实验五子程序设计21实验项目一 汇编语言编程基础实验一 熟悉和掌握debug的基本操作一、实验目的:1学习使用debug2学习在DEBUG中输入汇编指令的方法3初步理解与操作数有关的各种寻址方式及基本指令的功能4初步掌握调试的方法二、实验环境硬件:PC机一台软件:Windows XP三、实验预备内容1Debug的常用命令d显示内存命令r修改显示寄存器命令t单步运行命令a汇编命令u反汇编命令eg2. 阅读下面各条指令,在每条指令的“;”符号右边按要求填写相应的的执行结果,并且,除单操作数指令外,均须指出源操作数、目的操作数,以及所用的寻址方式分别是什么。假设:(ax)=1010H, (bx)=0202H, (si)=2030H, (di)=0404, (sp)=0055H, CF=1(ds:2030)=1234H, (ds:0454)=5678H(1) movax, 1200; al=( )(2) movbx, 2030; bh=( )(3) adddi, 2050; di=( ),cf=(0) (4) adcax, 1500; ax=( ),cf=( ) (5) movds, ax; ds=( )(6) decax; ax=( )(7) incax; ax=( )(8) movdi, si; di=( )(9) adcsp, di; sp=( ),cf=( ) (10) subax, bx; ax=( ),bx=( )(11) movsi, bl; (2030h)= ( ) (12) movdi+50, bh; 0454h= ( ) (13) movbh, si; bh=(34)(14) movbl, 0454; bl=(78)四、实验内容使用debug练习“三、实验预备内容”中的各条指令。五、实验步骤:注:1) 带下划线部分为同学们自己输入,“”:回车符2) 进入DEBUG之后,不区分大小写字母,一切立即数和地址数据均被默认为十六进制数,输入时,不加后缀“H”1. 进入命令提示符窗口并启动debug进入命令提示符窗口方法1:“开始”“运行”cmd进入命令提示符窗口方法2:“开始”“程序”“附件”命令提示符进入命令提示符窗口方法3:“开始”“运行”command出现如图 一1命令行窗口所示,当前所在目录为C:Documents and Setteingslhui(此目录视具体环境可能不同)。图 一1命令行窗口然后在窗口中输入debug启动debug,如图 一2启动debug:图 一2启动debug出现下图 一3debug命令提示符窗口:图 一3debug命令提示符 窗口出现提示符“”(“”:debug提示符),说明已进入DEBUG工作状态,可用debug命令进行操作。2. 练习debug中的r命令,以下操作均在debug命令提示符下进行。(1) 输入r;显示寄存器内容,按回车后出现如图 一4窗口(出现的指令不必理会)图 一4问题1:AX=?,SP=?,DS=?IP=? (2) 输入rax;修改寄存器ax命令,按回车后出现如图 一5窗口,说明ax现在的内容为0000:图 一5在“:”后面输入新值5555,按回车后出现如图 一6窗口图 一6(3) r;再次使用r命令显示所有寄存器内容图 一7问题2:此时寄存器AX=?模拟上述操作方法及步骤,将寄存器BX的内容修改为8888h。按上述步骤操作完毕后,寄存器ax,bx的内容应分别为5555h,8888h,如正确,则继续下面实验,否则,重复此操作步骤。3. 输入并执行汇编指令mov ax,1200h,涉及到的debug命令包括a,d,u,t(1) 用a命令输入汇编指令:a或a0100;汇编命令,用于输入汇编指令,并将其翻译为二进制形式的机器码图 一8如图 一8窗口,此时出现内存地址0B35:0100,输入汇编指令mov ax,1200,出现如图 一9窗口:图 一9观察窗口,出现新地址0B35:0103,此时可继续输入其他汇编指令。由于本次只练习一条指令,因此输入回车符结束本次汇编指令的输入,回到debug提示符状态。思考题:地址0B35:0100和地址0B35:0103,其中的0B35是什么地址,0100和0103是什么地址,输入汇编指令前后显示的地址有所不同,相差3,什么意思?解答:此时,汇编指令mov ax,1200已经以机器码形式被存到内存中地址为0B35:0100开始的3个字节中。(2) 用d命令和u命令观察已输入的汇编指令d或d0100;内存显示命令,显示内存中从地址cs:0100开始的128个字节的内容,每行16个字节,共8行,如图 一10中间区域:图 一10问题3:观察从地址0B35:0100开始的内存中,前三个字节的内容(即mov ax,1200h的机器码)是什么?思考题:内存中的各单元内容如何察看用debug的d命令,如需察看0B00:0200的内容,则输入d0B00:0200即可。u或u0100;反汇编命令,将机器码反汇编为汇编指令,显示器上将显示汇编指令的内存地址、指令机器码、汇编指令三列对照清单。注意观察从地址0B35:0100开始的第一条汇编指令是否是刚刚输入的“mov ax,1200”,同时观察其对应的机器码是否就是上面观察到的内容B8 00 12。图 一11问题4:上面图 一11窗口中,被框起来的一行中,各部分都是什么含意?(3) 用t命令执行汇编指令并观察结果t或t=0100;单步运行命令,从地址0100开始,执行刚刚输入的一条汇编指令mov ax,1200h,并显示所有寄存器的内容图 一12问题5:此时,AX值又是什么?怎么得到的?4. 对参考程序中其他汇编指令重复步骤3,并回答相应问题。5. 完成上述实验内容后,退出debug:q在发出q命令后,退出debug,控制将转回命令行窗口。注:q命令不保存正在被调试的程序或指令。实验二 构建汇编语言编程环境一、实验目的:1学习建立汇编语言masm实验环境;2初步了解汇编语言程序设计,掌握汇编语言程序格式3学习汇编语言程序的编辑、汇编、连接操作。二、实验要求1构建masm编程环境;为运行汇编语言程序至少要建立以下文件:(1) 编辑程序,如edit.exe,文本编辑器notepad.exe(2) 汇编程序,如masm.exe(3) 连接程序,如link.exe(4) 调式程序,如2建立给定的三个汇编语言源程序,并分别汇编、连接形成可执行文件。3分别运行三个可执行文件,观察运行结果。4根据给定要求建立一个汇编语言源程序,并对其进行汇编、连接形成可执行文件。三、实验步骤与内容1建立汇编语言的工作环境通常,Windows操作系统自带编辑程序edit.exe和notepad.exe以及调试程序,因此只需将汇编程序masm.exe和连接程序link.exe拷贝到你自己的工作目录(如e:lhmasm)下即可。2建立汇编语言源程序asm文件为了说明汇编语言源程序的格式以及初步了解汇编语言程序设计,下面分别用C语言和汇编语言实现了三个简单的程序,认真阅读每个程序的实现,对比c语言源程序和汇编语言源程序的异同点,然后将三个汇编语言源程序建立在你自己的工作目录e:lhmasm里,并且在每个汇编语言源程序最前面加上程序名称、功能、创建者、创建时间、编译方法、使用方法等注释内容,如下:;-;Program:;Created by:;Finished Date & Time:;Assembled and linked:;Use:;-程序1:输出一个字符x,然后退出程序C语言实现:c语言源程序(区分大小写)2-First.c汇编语言实现:汇编语言源程序(不区分大小写)2-Fisrt.asm#include /*源程序开始*/main()/*程序开始*/putch(x);/*输出一个字符*/exit();/*退出程序,返回*/*源程序结束*/Codeseg segment;源程序开始Assume cs:codesegmain: ;程序开始mov al,xMov ah, 0ehint 10h;输出一个字符,字符在al里mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束程序2:定义一个字符变量并初始化,然后输出这个变量,退出程序C语言实现:c语言源程序(区分大小写)2-Second.c汇编语言实现:汇编语言源程序(不区分大小写)2-Second.asm#include /*源程序开始*/char cm=m;/*定义变量cm并赋初值*/main()/*程序开始*/putch(cm);/*输出一个字符*/exit();/*退出程序,返回*/*源程序结束*/Dataseg segment;源程序开始cmdbm;定义变量cm并赋初值为mDataseg endsCodeseg segmentAssume cs:codeseg, ds:datasegmain: ;程序开始mov ax, datasegmov ds, axmov al, cmMov ah, 0ehint 10h;输出一个字符,字符在al里mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束程序3:从键盘读入一个字符,然后输出这个字符,退出程序C语言实现:c语言源程序(区分大小写)2-Third.c汇编语言实现:汇编语言源程序(不区分大小写)2-Third.asm#include /*源程序开始*/char cm;main()/*程序开始*/cm=getch();/*从键盘读入一个字符赋给cm*/putch(cm);/*输出一个字符*/exit();/*退出程序,返回*/*源程序结束*/Codeseg segment;源程序开始Assume cs:codesegmain: ;程序开始mov ah, 01hint 21h;等待键盘输入一个字符,放到al里Mov ah, 0ehint 10h;输出一个字符,字符在al里mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束3用汇编程序masm产生目标文件obj文件源程序建立后,就要用汇编程序masm对源文件进行汇编,汇编后产生二进制的目标文件(obj文件),汇编程序masm的作用类似于C语言源程序的编译过程,在命令行窗口其操作与汇编程序回答如下(如图 一13汇编2-first.asm):E:lhmasmmasm 2-first.asmMicrosoft (R) MASM Compatibility DriverCopyright (C) Microsoft Corp 1993. All rights reserved. Invoking: ML.EXE /I. /Zm /c /Ta 2-first.asmMicrosoft (R) Macro Assembler Version 6.11Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: 2-first.asmE:lhmasm图 一13汇编2-first.asm 汇编程序的输入文件是2-first.asm,其输出文件是2-first.obj,观察工作目录,会发现此时目录中多了一个2-first.obj文件。按同样方法对2-second.asm和2-third.asm进行汇编(如图 一14汇编2-second.asm和图 一15汇编2-third.asm),分别产生2-second.obj和2-thrid.obj文件。图 一14汇编2-second.asm图 一15汇编2-third.asm可以用dir命令查看工作目录中的obj文件(dir *.obj),如图 一16,此时可以观察到已经产生了三个目标文件。图 一16到此为止,汇编过程已经完成了。但是,汇编程序还有另一个重要功能:如同c语言的编译程序一样可以给出源程序中的错误信息:l 警告错误(warning errors):指出汇编程序所认为的一般性错误;l 严重错误(severe errors):指出汇编程序认为已使汇编程序无法进行正确汇编的错误;除给出错误的个数外,汇编程序还能指出错误信息。如果程序有错,则应重新调用编辑程序修改错误,并重新汇编直到汇编正确位置。4用连接程序link产生可执行文件exe文件汇编程序已产生出二进制的目标文件(obj),但obj文件并不是可执行文件,还必须使用连接程序(link)把obj文件转换为可执行的exe文件。在命令行窗口其操作与连接程序回答如下(如图 一17连接2-first.obj):E:lhmasmlink 2-first.objMicrosoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992Copyright (C) Microsoft Corp 1984-1992. All rights reserved.Run File 2-first.exe: List File nul.map: Libraries .lib: Definitions File nul.def: LINK : warning L4021: no stack segmentE:lhmasm图 一17连接2-first.objlink程序有两个输入文件obj和lib。obj是需要连接的目标文件,lib则是程序中需要用到的库文件,本次实验无特殊需要,对.lib:回答。link程序有三个输出文件,一个是exe文件,是我们所需要的,应对2-first.exe:回答,这样就建立了2-first.exe可执行文件。link的另两个输出文件为map文件和def文件,本次实验暂不理会,所以,nul.map:回答,nul.def:回答。连接程序给出的无堆栈段的警告性错误并不影响程序的运行。所以,到此为止,连接过程已经结束,可以执行2-first程序了。按同样方法分别对2-second.obj和2-third.obj进行连接(如图 一18连接2-second.obj和图 一19连接2-third.obj),分别产生2-second.exe和2-thrid.exe文件。图 一18连接2-second.obj图 一19连接2-third.obj可以用dir命令查看工作目录中的exe文件(dir 2-*.exe),如图 一20,此时可以观察到已经新产生了三个可执行文件。图 一205exe文件的执行在建立了exe文件后,就可以直接从命令行窗口执行该程序,如图 一21所示,输入2-first,可以看到程序输出了字符x后正常退出并返回命令行:图 一21【设计性内容】6根据以下要求建立汇编语言源程序,然后对其进行汇编、连接形成可执行文件,最后执行可执行文件,观察运行结果。程序4:定义两个字符变量并初始化,然后分别输出这两个变量,退出程序。实验项目二 简单程序实验三 循环程序设计一、实验目的:学习用汇编语言编写循环程序的基本方法和技能。二、实验要求:1建立给定的三个汇编语言源程序,然后汇编连接形成可执行文件。2分析给定得三个汇编语言源程序,然后用汇编语句分别实现for循环、while循环、dowhile循环。3根据给定要求建立一个具有循环结构的汇编语言源程序,并对其进行汇编、连接形成可执行文件。三、实验步骤与内容:1下面分别用C语言和汇编语言实现了三个简单的带有循环的程序,认真阅读每个程序的实现,观察在c语言和汇编语言中循环分别是如何实现的,然后将三个汇编语言源程序建立在你自己的工作目录e:lhmasm里,在每个汇编语言源程序最前面加上程序名称、功能、创建者、创建时间、编译方法、使用方法等注释内容,如下:;-;Program:;Created by:;Finished Date & Time:;Assembled and linked:;Use:;-并分别汇编连接形成可执行文件。程序1:连续输出5个字符x,然后退出程序C语言实现:c语言源程序(区分大小写)3-First.c汇编语言实现:汇编语言源程序(不区分大小写)3-Fisrt.asm#include /*源程序开始*/main()/*程序开始*/Int I;For(i=0;i5;i+)putch(x);exit();/*退出程序,返回*/*源程序结束*/Dataseg segment;源程序开始Idw?;定义循环变量Dataseg endsCodeseg segment Assume cs:codeseg, ds:datasegmain: ;程序开始mov ax,datasegmov ds,axmov al,xmov I,0;初始化循环变量fori:;循环开始mov ah, 0ehint 10h;输出一个字符,字符在al里inc I;修改循环变量cmp I,5;判断循环结束条件jbfori;不满足结束条件则转入下一次循环mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束程序2:不断从键盘输入字符,每输入一个字符,随即就输出这个字符,如果输入的是x,则输出这个字符,然后退出程序,否则继续。C语言实现:c语言源程序(区分大小写)3-second.c汇编语言实现:汇编语言源程序(不区分大小写)3-secongd.asm#include /*源程序开始*/char cm;main()/*程序开始*/Docm=getch();putch(cm);while(cm != x)exit();/*退出程序,返回*/*源程序结束*/Codeseg segment;源程序开始Assume cs:codesegmain: ;程序开始dowhile:;循环开始mov ah, 01hint 21h;等待键盘输入一个字符,放到al里Mov ah, 0ehint 10h;输出一个字符,字符在al里cmp al, x;判断循环条件jnedowhile;满足循环条件则转入下一次循环mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束程序3:从键盘输入一个字符,如果输入的是x,则退出程序,否则输出这个字符,然后继续从键盘输入字符。C语言实现:c语言源程序(区分大小写)3-third.c汇编语言实现:汇编语言源程序(不区分大小写)3-third.asm#include /*源程序开始*/char cm;main()/*程序开始*/cm=getch();while(cm != x)putch(cm);cm=getch();exit();/*退出程序,返回*/*源程序结束*/Codeseg segment;源程序开始Assume cs:codesegmain: ;程序开始whilel:;循环开始mov ah, 01hint 21h;等待键盘输入一个字符,放到al里cmp al, x;判断循环条件jeendwhile;不满足循环条件就退出循环Mov ah, 0ehint 10h;输出一个字符,字符在al里jmp whilel;转入下一次循环endwhile:mov ax,4c00hint 21h;退出程序,返回Codeseg endsEnd main;源程序结束2观察给定的三个汇编语言源程序,从中找出实现for循环、while循环、dowhile循环的汇编语句,然后试试再用不同的汇编语句来实现三种循环。【设计性内容】3根据以下要求建立一个具有循环结构的汇编语言源程序,然后对其进行汇编、连接形成可执行文件,最后执行可执行文件,观察运行结果。程序4:编程输出下列图案:*实验四 分支程序设计一、实验目的:学习用汇编语言编写分支程序的基本方法和技能。二、实验要求:1建立给定的三个汇编语言源程序,然后汇编连接形成可执行文件。2分析给定得三个汇编语言源程序,然后用汇编语句分别实现ifthen、ifthenelse、switch。3根据给定要求建立一个具有分支结构的汇编语言源程序,并对其进行汇编、连接形成可执行文件。三、实验步骤与内容:1下面分别用C语言和汇编语言实现了三个简单的带有分支的程序,认真阅读每个程序的实现,观察在c语言和汇编语言中分支分别是如何实现的,然后将三个汇编语言源程序建立在你自己的工作目录e:lhmasm里,在每个汇编语言源程序最前面加上程序名称、功能、创建者、创建时间、编译方法、使用方法等注释内容,如下:;-;Program:;Created by:;Finished Date & Time:;Assembled and linked:;Use:;-并分别汇编连接形成可执行文件。程序1:对键盘输入的字符:如果是小写字母,则转换为大写字母显示,然后退出程序C语言实现:c语言源程序4-First.c汇编语言实现:汇编语言源程序4-Fisrt.asm#include /*源程序开始*/Char cm;main()/*程序开始*/cm=getch();if(cm=a&cm=z)cm = cm-20h;putch(cm);exit();/*退出程序,返回*/*源程序结束*/code_segsegment;源程序开始assumecs:code_segstart:;程序开始mov ah,01int21h;等待键盘输入一个字符,放到al里cmpal,a;if条件判断jbifend;不满足则跳出ifcmpal,zjaifendsubal,20h;if条件满足,则小写字母转换为大写字母 mov dl,almov ah,02int21h;输出,要输出的字母放于dl中ifend:mov ax,4c00hint 21h;退出程序,返回code_segendsendstart;源程序结束程序2:对键盘输入的字符:如果是大写字母,则转换为小写字母显示,否则直接输出显示,然后退出程序。C语言实现:c语言源程序4-second.c汇编语言实现:汇编语言源程序4-secongd.asm#include char cm;main()cm=getch();if(cm=A&cm=Z)cm = cm+20h;putch(cm);ElsePutch(cm);exit();code_segsegmentassumecs:code_segstart:mov ah,01;等待键盘输入,int21h;输入的字符以ascii码形式存放在al中cmpal,A;if条件判断jbifelse;不满足则跳到else分支cmpal,Zjaifelseaddal,20h;满足if条件,则大写字母转换为小写字母 mov dl,almovah,02int21hjmp stopifelse:mov dl,almovah,02int21hstop:mov ax,4c00hint 21hcode_segendsendstart程序3:从键盘输入字符,如果输入的是g,则输出这个girl, 如果输入的是b,则输出boy, 如果输入的是m,则输出man, 如果输入的是w,则输出weman, 如果输入的是其他字符,则退出程序。C语言实现:c语言源程序4-third.c汇编语言实现:汇编语言源程序4-third.asm#include char cm;main()cm=getch();switch(cm)case g:puts(“girl”);break;case b:puts(“boy”);break;case m:puts(“man”);break;case w:puts(“woman”);break;default:exit();Dataseg segmentStr1db girl$Str2db boy$Str3db man$Str4db weman$Dataseg endscode_segsegmentassumecs:code_seg,ds:datasegstart:mov ax,datasegmov ds,ax mov ah,01;等待键盘输入,int21h;输入的字符以ascii码形式存放在al中switchcm:;switch开始cmpal,gjecasegcmpal,bjecasebcmp al,mje casemcmp al,wje casewjmp stopcaseg:;分支1lea dx,str1mov ah,09h int 21h; 输出以”$”结尾的字符串,ds:dx=串地址jmp stopcaseb: ;分支2lea dx,str2mov ah,09h int 21h; 输出以”$”结尾的字符串,ds:dx=串地址jmp stopcasem: ;分支3lea dx,str3mov ah,09h int 21h; 输出以”$”结尾的字符串,ds:dx=串地址jmp stopcasew: ;分支4lea dx,str4mov ah,09h int 21h; 输出以”$”结尾的字符串,ds:dx=串地址jmp stopstop:mov ax,4c00hint 21hcode_segendsendstart2观察给定的三个汇编语言源程序,从中找出实现ifthen、ifthenelse、switch的汇编语句,然后试试再用不同的汇编语句来实现三种分支结构。【设计性内容】3根据以下要求建立一个具有分支结构的汇编语言源程序,然后对其进行汇编、连接形成可执行文件,最后执行可执行文件,观察运行结果。程序4:试编写一程序,从键盘接收字符,如果是一个小写字母,则找出它的前导字符和后继字符(如c的前导字符是b,后继字符是d,而a没有前导字符,z没有后继字符),按顺序显示这三个字符,如果是数字08,则加1后输出结果,如果是9,则减1后输出结果。实验五 子程序设计一、实验目的:学习同一段内子程序设计的基本方法和技能,主程序与子程序分别通过寄存器、公共变量进行参数传递。二、实验要求:(1)根据要求建立源程序,并汇编连接形成可执行文件。程序完成功能:将一个全是小写字母,以0结尾的字符串,转化为大写。要求用子程序完成该主要功能。程序要处理的字符串以0作为结尾符,这个字符串可以如下定义:dbconversation,0(2)通过debug调试的方法了解上述程序的运行情况,观察运行结果是否正确。(3)分析给定的程序,找出其中问题所在并改正。三、实验步骤与内容:应用这个子程序,按要求字符串的内容后面一定要有一个0,标记字符串的结束。子程序可以依次读取每个字符进行检测,如果不是0,就进行大写的转化,如果是0,就结束处理。由于通过检测0而知道是否已经处理完整个字符串,所以子程序可以不需要字符串的长度作为参数。我们可以用jcxz来检测0。注:jcxz:如果cx=0(zero)则跳转(jump)。1、给定子程序1及对应的主程序的实现如下,请建立该完整源程序,在源程序最前面加上程序名称、功能、创建者、创建时间、编译方法、使用方法等注释内容,如下:;-;Program:;Created by:;Finished Date & Time:;Assembled and linked:;Use:;-并汇编连接形成可执行文件5-first.exe。;*;说明:将一个全是小写字母,以0结尾的字符串,转化为大写;参数:公共变量straA是字符串的首地址;结果:没有返回值capital1procmov si,0s:movcl,straAsi;si充当下标,类似于c语言中的数组下标;将字符串中的字符一次送入cl中movch,0jcxzok;如果(cx)=0,结束,否则处理。andstraAsi,11011111b;将字符串straA中的第si个字母转化为大写incsi;指向下一个单元jmps;继续下一个字符的处理ok:retcapital1endp我们来看一下这个子程序的应用,将data段中的字符串转化为大写,完整的程序如下:C语言实现:c语言源程序5-first.c汇编语言实现:汇编语言源程序5-first.asm#include char cm=”conversation”;main()Call captial1();/*调用函数*/exit();Captial1()/*定义函数*/Int I=0;While(cmi!=0)Cmi=cmi-20h;I+;Return;/*返回调用处*/*函数定义结束*/datasegmentstraAdbconversation,0dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axcallcapital1;调用子程序movax,4c00hint21hcapital1proc;定义子程序mov si,0s:movcl,straAsimovch,0jcxzokandstraAsi,11011111bincsijmpsok:ret;返回调用处capital1endp;子程序定义结束codeendsendstart2、给定子程序2及对应的主程序的实现如下,请建立该完整源程序,并汇编连接形成可执行文件5-second.exe:;*;说明:将一个全是小写字母,以0结尾的字符串,转化为大写;参数:di:si指向字符串的首地址;结果:没有返回值capital2procs:movcl,simovch,0jcxzok;将ds:si所指单元中的字母转化为大写and byte ptrsi,11011111b;ds:si指向下一个单元incsijmpsok:retcapital2endp完整的数据段和代码段程序如下:datasegmentdbconversation,0dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovsi,0;使ds:si指向字符串的首地址callcapital2movax,4c00hint21hcapital2procs:movcl,simovch,0jcxzokandbyte ptrsi,11011111bincsijmpsok:retcapital2endpcodeendsendstart3、根据以上内容,认真阅读下面文字,回答相应问题,完成相应操作。问题1:子程序2是利用寄存器方式进行主程序与子程序之间参数的传递,用到了哪个寄存器?问题2:指令“andstraAsi,11011111b”是怎样实现小写字母转大写字母的?由于该程序没有输出,所以直接运行时无法观察到运行结果。通过分析知道程序完成功能是将原有数据段中一个字符串转化为大写,所以只要观察程序运行前后数据段相应存储单元的内容变化情况,就可以知道程序运行是否正确,这可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论