77范文网 - 专业文章范例文档资料分享平台

汇编语言程序设计实验报告(3)

来源:网络收集 时间:2020-04-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

start: mov ax,data mov ds,ax call writeGreatest2area2 mov ax,255 call findTheValue mov ax,4c00h int 21h code ends end start

结果测试:

对实验二进行编译链接:

运行程序,输出实验结果:

Debug:

显示寄存器内容,如下图所示:

用U命令反汇编可执行代码,如下图所示:

用g命令设置断点到CS:00D8处,如下图所示:

用t命令跟踪执行程序,如下图所示逐条跟踪三次的结果:

用q命令退出:

实验三

实验要求:熟悉Windows编程环境

⑴ 编写一个Windows界面汇编程序,显示一个带Yes,No选择按钮的消息框,标题显示为:自己的姓名;正文内容显示为:学号;选择Yes的返回:“你选择的是Yes”,选择No的返回:“你选择的是No”。 (2)(编写一个Windows 32位控制台程序,要求从键盘输入5个十六进制数,输出该数所对应的二进制数中所包含“0”的个数。)

(3)熟悉WINDBG调试环境。使用WINDBG调试程序察看机器码,并单步执行,观察每一条指令的执行结果、 寄存器的内容、内存变量和堆栈数据的变化情况。

实验代码:

.386 .model flat,stdcall option casemap:none MessageBoxA .386 .model flat,stdcall includelib msvcrt.lib printf PROTO C:dword,:vararg

PROTO :dword, :dword, :dword, :dword scanf PROTO C:dword,:vararg

MessageBox equ .data Includelib user32.lib szmsg byte '%d',0ah,0 Includelib msvcrt.lib msg byte '%d',0 NULL equ 0 szformat byte '%x',0 MB_OK equ 1 buf dword 40 dup(?) .stack 4096 l0 dword ? .data l1 dword ? SzTile byte '陈强!',0 l2 dword ? SzMsg byte '1120131888!',0 l3 dword ? NO1 byte '我选的是确定!',0ah,0 l4 dword ? NO2 byte '我选的是取消!',0ah,0 .code .code start: start: mov esi,0 invoke MessageBox, L: invoke scanf,offset NULL, szformat,offset buf offset SzMsg, mov eax,buf offset SzTile, mov ecx,4 MB_OK mov edx,0 cmp eax,1 t: mov ebx,eax jz A and ebx,1 cmp eax,1 cmp ebx,0 jnz B jz yz A: invoke MessageBox, cmp ebx,0 NULL, jnz ty offset NO1, yz: inc edx offset SzTile, ty: shr eax,1 MB_OK loop t ret push edx B: invoke MessageBox, INC ESI NULL, cmp esi,5 offset NO2, jb L offset SzTile, pop l4 MB_OK pop l3 ret pop l2 ret pop l1 end start pop l0

invoke printf,offset szmsg,l0 invoke printf,offset szmsg,l1 invoke printf,offset szmsg,l2 invoke printf,offset szmsg,l3 invoke printf,offset msg,l4 ret end start

实验代码思路:

第一小题代码思路:

1.说明MessageboxA的调用规则和参数类型

2.将定义的MessageBoxA通过指令equ赋给MessageBox 3.使用伪指令invoke,首次输出显示一个带Yes,No选择按钮的消息框,标题显示为:自己的姓名;正文内容显示为:学号

4.通过比较MessageBox的返回值与1的大小确定其选择的yes还是no 5.再次使用伪指令INVOKE调用MessageBox二次输出选择Yes的返回:“你选择的是Yes”,选择No的返回:“你选择的是No”。

第二小题代码分析:

1. 说明scanf和printf的调用规则和

参数类型

2. 在数据区说明输入输出的表现形式 3. 设置一个外部变量esi确保循环五

次,即可以依次输入5个十六进制数;不断使数据右移即除二,与1做与运算,然后和0比较大小,若与0相等,则该数有一个0,用edx记录0的个数。

4. 把edx入栈,然后清零 5. 出栈,倒序输出

检测结果,验证正确性

(1) 对第一个小实验代码进行编译链接,如下图所示:

(2) 运行检测结果:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编语言程序设计实验报告(3)在线全文阅读。

汇编语言程序设计实验报告(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/983853.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: