32位汇编上机指导
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4/7
实验二 简单分支程序设计实验
二、实验内容
3.输入三个无符号整数 调用 子程序),判断并 3.输入三个无符号整数(调用readuid子程序 判断并 输入三个无符号整数 调用readuid子程序 输出这三个数是否能构成一个三角形的三条边。 输出这三个数是否能构成一个三角形的三条边。
思考题: 思考题:若这三个数能构成一个三角形的 三条边, 三角形的形状:斜三角形、 三条边,输出三角形的形状:斜三角形、等腰
实验一 熟悉汇编语言开发环境与工具
二、实验内容
3. 编写一完整的程序,单步执行。记录每条语句执行后寄 编写一完整的程序,单步执行。 存器AL的值和标志位 的值。 存器 的值和标志位 CF、 ZF、 SF、 OF的值。 、 、 、 的值 mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al
1/7
实验一 熟悉汇编语言开发环境与工具
二、实验内容
2/7
1.在命令行方式下完成HelloWord.asm的编辑、调试与运行。 1.在命令行方式下完成HelloWord.asm的编辑、调试与运行。 在命令行方式下完成HelloWord.asm的编辑 要求:详细记录实验的每一步骤,查看列表文件。 要求:详细记录实验的每一步骤,查看列表文件。 2.在VC IDE下完成 下完成HelloWord.asm的编辑、调试与运行。 的编辑、 2.在 下完成 的编辑 调试与运行。 要求: 详细记录创建VC IDE下实验环境的每一步骤。 下实验环境的每一步骤。 要求:⑴ 详细记录创建 下实验环境的每一步骤 程序运行时字符变量msg的首地址? ⑵ 程序运行时字符变量msg的首地址? msg的首地址 程序运行时第一条可执行语句的首地址? ⑶ 程序运行时第一条可执行语句的首地址? 的值? 程序加载到内存后寄存器ESP、CS、DS的值 ⑷ 程序加载到内存后寄存器ESP、CS、DS的值?
2/7
实验二 简单分支程序设计实验
二、实验内容
1.编写程序,计算下面函数的值并输出。 1.编写程序,计算下面函数的值并输出。 编写程序
2 x s = 3 x 4 x
( x < 0) (0 <= x <= 10 ) x > 10
3/7
实验二 简单分支程序设计实验
二、实验内容
2.输入一个年份 调用 子程序),判断是否 2.输入一个年份(调用readuid子程序 判断是否 输入一个年份 调用readuid子程序 是闰年. 是闰年 提示:采用伪代码描述如下: 提示:采用伪代码描述如下: read year if (year mod 4=0 and year mod 100 <>0) or (year mod 400=0) then print year ,'is leap year. ' 'is else print year ,'is not leap year. ' 'is
7/7
循环程序设计实验 实验三 循环程序设计实验
回答问题: 回答问题:
1. 在循环结构中,如何避免无限循环情况的发生? 在循环结构中,如何避免无限循环情况的发生?
7/7
循环程序设计实验 实验三 循环程序设计实验
回答问题: 回答问题:
和下面的程序段中,循环体将被执行多少次? 2. 和下面的程序段中,循环体将被执行多少次? 如果的初值为-100,循环体将被执行多少次? 如果的初值为-100,循环体将被执行多少次? mov ecx,0 loopTest: mov eax,ecx call dispuid loop loopTest
32位汇编语言程序设计 32位汇编语言程序设计 实验指导
2008年 2008年3月
西安理工大学计算机科学与技术系
实验一 熟悉汇编语言开发环境与工具
一、实验目的
掌握汇编语言程序上机过程。 1. 掌握汇编语言程序上机过程。 掌握汇编语言程序结构。 2. 掌握汇编语言程序结构。 掌握教科书表2.3中常用 子程序的使用方法(P48 。 中常用I/O子程序的使用方法 3. 掌握教科书表 中常用 子程序的使用方法 P48)。 了解汇编程序与连接程序的功能,列表文件的意义。 4. 了解汇编程序与连接程序的功能,列表文件的意义。 掌握VC IDE下DEBUG调试汇编语言程序的方法 调试汇编语言程序的方法。 5. 掌握VC IDE下DEBUG调试汇编语言程序的方法。
3/8
循环程序设计实验 实验三 循环程序设计实验 二、实验内容
numbers的定义 的定义: 2. Fibonacci numbers的定义: f1=1,f2=1, fn= fn-1 + fn-2 n>=3 f1=1,f2=1, fn- fn编程输出Fibonacci numbers的前 的前3 编程输出Fibonacci numbers的前30项。
2/8
循环程序设计实验 实验三 循环程序设计实验
二、实验内容
1.编写程序,求0到100间所有偶数和并输出。 间所有偶数和并输出。 1.编写程序, 编写程序 到 间所有偶数和并输出 loop、 while和 要求采用 loop、 while和do while 三种不同的 循环结构完成。 循环结构完成。
1/8
循环程序设计实验 实验三 循环程序设计实验 一、实验目的
指令。 1. 掌握 loop 指令。 2. 掌握while和do while循环结构。 掌握while和 while循环结构 循环结构。 掌握伪指令.while和 .repeat。 3. 掌握伪指令.while和 .repeat。 4. 掌握一维数组处理的常用算法;迭代与枚 掌握一维数组处理的常用算法; 举等算法。 举等算法。
〔习题4.17〕 习题 〕
6/8
循环程序设计实验 实验三 循环程序设计实验
二、实验内容
5.有一个首地址为 5.有一个首地址为string的字符串 ,分别 有一个首地址为 的字符串 统计string中空格、英文字母、数字和其它 中空格、 统计 中空格 英文字母、 字符的个数并输出。 字符的个数并输出。
思考题: 思考题:在不产生溢出的情况下n的最 大值是多少? 大值是多少?
4/8
循环程序设计实验 实验三 循环程序设计实验
二、实验内容
3. 有一个首地址为 有一个首地址为array的20个有符号的双字数 的 个有符号的双字数 组,编程分别求出正数的和与负数的和并输 出。
思考题:将求和改为求最大值与最小值。 思考题:将求和改为求最大值与最小值。
3/7
(验证习题 验证习题3.20、 3.21 、 3.26) 验证习题 、
4/7
实验一 熟悉汇编语言开发环境与工具
二、实验内容
下面各条指令是否有错?编写一完整的程序进行验证, 4. 下面各条指令是否有错?编写一完整的程序进行验证, 详细记录汇编程序给出的错误信息。说明具体错误原因。 详细记录汇编程序给出的错误信息。说明具体错误原因。 mov mov mov mov mov add mov ecx,dx al,300 , 20h,ah es,1234h es,ds ax,[esi][edi] [edx],10
6/7
实验二 简单分支程序设计实验
二、实验内容 4.编程实现习题4.11和4.21 。 4.编程实现习题 编程实现习题 和
7/7
实验二 简单分支程序设计实验
回答问题: 回答问题:
在多分支结构中, 1. 在多分支结构中,为什么必须要有无条件转移 指令? 指令? 2.在汇编语言中 2.在汇编语言中while和do while循环结构是 否可变换为一种结构?如何做? 否可变换为一种结构?如何做? 高级语言中逻辑表达式 逻辑表达式在汇编语言中是如何实 3. 高级语言中逻辑表达式在汇编语言中是如何实 现的? 现的?
5/8
循环程序设计实验 实验三 循环程序设计实验
二、实验内容
4.有一个首地址为 4.有一个首地址为string的字符串 ,剔除 有一个首地址为 的字符串 string中所有的空格字符。请从字符串最后 中所有的空格字符。 中所有的空格字符 一个字符开始逐个向前判断、并进行处理。 一个字符开始逐个向前判断、并进行处理。
提示:采用div指令把整数分解为单个的数字,并将它们组 div指令把 提示:采用div指令把整数分解为单个的数字, 合成一个新的整数。
8/8
循环程序设计实验 实验三 循环程序设计实验
二、实验内容
7.编写程序,求出所有满足勾股定理且边长 不 7.编写程序, 编写程序 大于500的直角三角形。 的直角三角形。 大于 的直角三角形 提示:采用三重循环,用穷举法求解。 提示:采用三重循环,用穷举法求解。
3/8
实验一 熟悉汇编语言开发环境与工具
5/7
二、实验内容 6. 采用小端方式多字节数据在内存中是如何存 采用小端方式 小端方式多字节数据在内存中是如何存 放的?编写代码进行验证。要求记录程序运 放的?编写代码进行验证。 行时各个变量的首地址及字节排列的顺序。 行时各个变量的首地址及字节排列的顺序。 (习题3.15) 7. 编程实现习题 编程实现习题3.14 和3.28
2/8
实验四 子程序与操作系统功能调用
二、实验内容
1.编写一个求 的子程序 利用它求1!+2! +3! +4! 1.编写一个求n!的子程序,利用它求 编写一个求 的子程序, +5! +6! +7! +8! 的和并输出。 的和并输出。 要求参数的传递分别采用:寄存器传递、 要求参数的传递分别采用:寄存器传递、全 局变量传递,堆栈传递三种不同的方法实现。 局变量传递,堆栈传递三种不同的方法实现。分 析说明三种不同的参数的传递特点。 析说明三种不同的参数的传递特点。
在DEBUG中标志位符号化表示 中标志位符号化表示
Flag Name Overflow Direction Interrupt Sign Zero Aux Carry Parity Carry Abbreviation OV UP EI PL ZR AC PE CY
6/7
Key to flag abbreviations
实验四 子程序与操作系统功能调用 一、实验目的
1/8
掌握主程序与子程序间参数传递的方法。 1. 掌握主程序与子程序间参数传递的方法。 2. 掌握Windows API的调用方法。 掌握Windows API的调用方法 的调用方法。 掌握Dos的功能调用方法 的功能调用方法。 3. 掌握Dos的功能调用方法。 4. 掌握将复杂的应用问题分解为简单的小问 题的方法,深刻理解“自定向下, 题的方法,深刻理解“自定向下,逐步求 精”的思想。 的思想。
三角形、等边三角形。 三角形、等边三角形。
5/7
实验二wenku.baidu.com简单分支程序设计实验
二、实验内容 3. 采用无条件和条件转移指令构造while和
do while循环结构,完成下面的求和任务并 循环结构, 为双字)。 输出sum(sum 为双字 。
sum=1+2+3+….+n
思考题:假设sum 为双字无符号整数,在和不溢出 思考题:假设sum 为双字无符号整数, 的情况下求出n的最大值;输出sum和 的值。 的情况下求出n的最大值;输出sum和n的值。
在DEBUG中查看内存变量 中查看内存变量
6/7
7/7
回答问题: 回答问题:
语句后没有起始地址, 1. end 语句后没有起始地址,会出现什么情况 ? 2. 如何获取数据段的起始地址。 如何获取数据段的起始地址。
1/7
实验二 简单分支程序设计实验
一、实验目的
掌握算术运算指令 算术运算指令。 1. 掌握算术运算指令。 掌握CMP、 TEST、条件转移与无条件转移指令。 2. 掌握CMP、 TEST、条件转移与无条件转移指令。 掌握分支程序设计结构。 3. 掌握分支程序设计结构。
实验三 循环程序设计实验 循环程序设计实验
二、实验内容
7/8
回文) 6. palindrome(回文)是指正读和反读都一样的 数或文本。例如:11、121、12321等,编写程序, 数或文本。例如:11、121、12321等 编写程序, 之间所有回文数并输出。 求10到10000之间所有回文数并输出。要求每行输出 到 之间所有回文数并输出 10个数。 个数。 个数