技术标签: 汇编
试 题:
实验1 汇编语言的标准格式
实验2 Debug命令学习
实验3 Dos调用
实验4 串操作指令、分支与循环程序设计
实验5 堆栈指令及位操作
实验6 数据传送指令操作
要 求:
独立完成所有实验项目,并记录实验过程,完成实验报告
实验报告(一)
实验项目 |
实验一 汇编语言环境的建立 |
实验人员 |
|
实验性质 |
验证性实验 |
实验内容 |
1.汇编软件环境建立 2.掌握汇编语言程序的编辑、调试、链接、运行操作 |
实验目的 和要求 |
1.掌握汇编软件环境的建立 2.掌握汇编语言程序的编辑、调试、链接、运行操作 |
重点与难点 |
重点:熟悉汇编软件环境的建立、汇编语言程序的调试 难点:汇编语言程序的调试 |
实 验 进 程 实 验 进 程 |
输入命令dir: 录入程序实例: 保存文件并检查程序是否错误: 链接T1.OBJ生成可执行T1.EXE文件: 实验二: 检查环境是否生成: 程序实例二: 修改星号为20个,背景为绿色,星号居中: |
思考题 |
实验报告(二)
实验项目 |
实验 DEBUG的使用 |
实验人员 |
|
实验性质 |
验证性实验 |
实验内容 |
1.汇编软件环境建立 2.掌握汇编语言程序的编辑、调试、链接、运行操作 3.学习debug子命令 |
实验目的 和要求 |
1.掌握汇编软件环境的建立 2.掌握汇编语言程序的编辑、调试、链接、运行操作 3.初步学习debug T,Q, D,R,E,A,U,G字命令。 |
重点与难点 |
重点:熟悉汇编软件环境的建立、汇编语言程序的调试 难点:汇编语言程序的调试 |
实 验 进 程 实 验 进 程 |
修改后: 录入程序: |
思考题 |
实验报告(三)
检查Debug命令学习请况汇编语言实验方案
第5课 2学时
一、目标任务
Mov ax,【0000】
Add ax,【0002】
Mov 【0004】,ax
Retf
3.用AL寄存器计算35H+76H=?观察标志寄存器。若使用AX寄存器结果又是什么?并分析之。
二、实验主要步骤:
1.在DOS的命令行窗口执行命令Debug(进入Debug程序环境,熟悉Debug各个命令的用法。)
输入 程序段
Debug
A
0483:0100 MOV AX,[0000]
0483:0103 ADD AX,[0002]
0483:0107 MOV [0004],AX
0483:010A RETF
输入数据段内容如下:
E DS:0000 23 00 25 00 00 00 00 00 ;两个已知数
T
T
在Debug中编制简单的汇编程序片断,并调试运行,得出结果。
2.步骤
(1)用E命令键入上述机器语言程序和数据段的初值。
—E DS:000 23 25
—E DS:006 2A 2A 2A (2A为*,是为便于查看数据段内容而设置)
—E CS:100 A1 00 00 03 06 02 00
—E CS:107 A3 04 00 CB
(2)用D,U命令检查数据段、代码段内容。
—D DS:0000
—U CS:0100
(3)用T命令逐条执行上述程序,注意观察每条指令执行后相应寄存器的变化,找出计算结果。
(4)用U命令反汇编本程序。(填入程序段)
—U cs:0100
(5)用R命令修改CS和IP的内容为0483:0100重新执行上述程序。
—R IP
0100
—R cs
0483
-T运行程序
查看计算结果 【0004】= 48H
由于用的自己电脑,不是学校电脑,所以这里的-R CS :0483得修改成:073F,否则结果会错。
(7)用Q命令退出程序。
3.用以上方法计算35H+76H=?记录标志寄存器的内容。
AL寄存器 35H+76H=ABH
三.自己试着写段程序,给出结果:
-A16C6:100
16C6:0100 CLD
16C6:0101 MOV di,1000
16c6:0104 MOV cx,010
16c6:0107 MOV ax,55aa
16c6:010a REP STOSW
16C6:010C CLD
16C6:010D MOV SI,100
16C6:0110 MOV DI,2000
16C6:0113 MOV CX,A
16C6: 0115 MOV AX, [SI]
16C6:0117 REP MOVS
16C6:0118
-T
修改IP 及CS 查看目标数据。
实验报告(四)
实验项目 |
串操作指令、分支与循环程序设计 |
实验性质 |
综合性实验 |
实验人员 |
|
实验内容 |
1.串操作 2.数据的输入与输出 3.分支与循环程序设计 |
目的和要求 |
1.掌握常用串操作指令 2.学习提示信息的显示及键盘输入字符的方法。 3.掌握分支程序和循环程序的设计方法。 |
重点与难点 |
重点:串操作指令、DOS常用系统功能调用 难点: 分支与循环程序设计方法 |
实 验 进 程 |
实验内容布置与实施 1.输入以下程序段并运行之,回答后面的问题。 CLD MOV DI,1000 MOV AX,55AA MOV CX,10 REP STOSW 上述程序段执行后:
答:AA 55 AA 55 AA 55 AA 55-AA 55 AA 55 AA 55 AA 55
答:[DI]= 0000,(CX)= 0000,原因:在x86架构中,DI寄存器存储的是数据段偏移量,而CX寄存器存储的是代码段偏移量。所以当程序执行时,DI和CX会被初始化为0。 2.在上题的基础上,再输入以下程序段并依次运行之。 程序段1: Cld MOV SI,1000 MOV DI,2000 MOV CX,12 MOV AX, [SI] REP MOVSB 执行后: 从DS:2000H开始的16个单元的内容是什么? [SI]= ?[DI]= ?并分析之。 答:从DS:2000H开始的16个单元的内容是AA 55 AA 55 AA 55 AA 55-AA 55 00 00 00 00 00 00。[SI]= 0000,[DI]= 0000 程序段2: STD MOV ds[2008],4433 MOV SI,1000 MOV DI,2020 MOV CX,10 MOV AX,DS[2008] REPZ STOSW 查看原地址[SI]和目标地址[DI]的内容?并分析之。 答:输入D DS:1000得AA55... 输入D DS:2020得3344... 分析:MOV DS【2008】,4433的影响。 3.通过下述程序段的输入和执行来熟悉 Debug的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: datas segment char db '?' datas ends stacks segment db 128 dup(?) stacks ends codes segment assume cs:codes,ds:datas,ss:stacks ;mov cx,5h start: mov ax,datas mov ds,ax mov cx,10h st0: mov ah,0 int 16h mov char,al mov ah,2 mov dl,char int 21h jz st1 loop st0 st1: mov ah,4ch int 21h codes ends end start |
思考题 |
答:0号功能的输入参数是:ds:datas, es:stacks。输出参数是:ax, ax+1。它们分别放在ds和es寄存器中。2号功能与0号功能类似,输入参数是:ds:datas, es:stacks。输出参数是:cx, cx+1。它们分别放在ds和es寄存器中。9号功能与0号功能类似,输入参数是:ds:datas, es:stacks。输出参数是:dx, dx+1。它们分别放在ds和es寄存器中。10号功能与0号功能类似,输入参数是:ds:datas, es:stacks。输出参数是:bx, bx+1。它们分别放在ds和es寄存器中。
答:(1)读取字符或字符串:使用DOS中断服务程序int 16h,将数据从键盘缓冲区读入内存中。具体操作是先设置寄存器cx为要读取的字符数,然后调用int 16h中断,将数据存储在ds:dx指向的内存地址中。 (2)输出字符或字符串:同样使用DOS中断服务程序int 16h,将内存中的字符或字符串输出到屏幕。具体操作是先设置寄存器dx为要输出的内存地址,然后调用int 16h中断,将数据从内存中读取并显示在屏幕上。 |
作业 |
从键盘输入任意一个字符,并把结果显示在屏幕上。 |
课后自我 总结分析 |
汇编语言中的串操作指令主要用于处理字符串数据,如复制、比较、移动等。熟练掌握这些指令对于编写高效的汇编程序至关重要。分支与循环程序设计是汇编语言中的重要组成部分,它们可以实现程序的逻辑控制。通过合理地使用分支和循环指令,可以提高程序的执行效率和可读性。在学习汇编语言时,要注意理解指令的功能和用法,而不仅仅是死记硬背。通过实际编程练习,加深对汇编语言的理解和运用能力。 |
实验报告(五)
实验项目 |
汇编语言程序设计 |
实验性质 |
综合性实验 |
实验人员 |
|
实验内容 |
1. 数据传送指令操作 2. 堆栈指令及位操作 |
目的和要求 |
1.掌握常用传送指令的使用方法 2.了解各种状态标识的意义及指令执行对状态标识的影响 |
重点与难点 |
重点:数据传送指令 难点: 各种指令执行对标志位的影响 |
教 学 进 程 |
实验内容布置与实施 1.把下述指令段变为程序运行,使用Debug,并通过显示器屏幕观察程序的执行情况。练习程序段如下: MOV BL,08 MOV CL,BL MOV AX,0327 MOV BX,AX MOV DS[0020],BX 填写[0020]的内容=2703 2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102 MOV BX,0304 MOV CX,0506 MOV DX,0708 PUSH AX PUSH BX POP BX POP AX 则: (ax)= 0102 (IP)= 0110 (SP)=FFFB (bx)= 0304 (IP)= 010F (SP)=FFFB 3.补齐程序,填在空格处,上机验证程序: Data SEGMENT BUF DB -51,0A4H,64, -21,72H,0,92H CON=$-BUF ; CON= ___7____。 DATA ENDS CODE SEGMENT ASSUME DE:DATA,CS:CODE START: MOV BX,0 MOV CX,CON MOV DL,0 M: CMP BUF [BX],0 JG N INC DL N: INC BX LOOP M CODE ENDS END START 请问:
(4/5选作一题) 4.指出以下指令执行后,ax寄存器的内容。(每步记录AX) MOV AX, 4321H AX= PUSH AX AX= MOV CL,4 AX= SHL AH, CL AND AL,0FH OR AL, AH MOV BL, AL POP AX SHR AL, CL AND AH, 0F0H ADD AH, AL MOV AL, BL 5.从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si sihT”),试编写程序段并上机验证之。 DATA SEGMENT ORG 1000H STRING DB ‘This is a string’ CN DB ($-STRING) DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX, DATA MOV DS, AX MOV DI, OFFSET STRING ADD DI, 15 MOV BX, 2000H MOV CL, CN MOV CH, 0 AGAIN: MOV AL, [DI] MOV BYTE PTR[BX], AL INC BX DEC DI LOOP AGAIN MOV AH, 4CH INT 21H CODE ENDS END START |
思考题 |
1.整理出运行正确的各题源程序段和运行结果。 2.写出第4/5题中程序段。 |
作业 |
将实验内容中的1和2题的标准源程序代码写到作业本。 |
课后自我 总结分析 |
1.堆栈指令 PUSH:将一个16位或32位的通用寄存器内容压入堆栈。 POP:从堆栈中弹出一个字的数据到指定的通用寄存器。 PUSHA:将AX、CX、DX、BX、SP和BP的内容依次压入堆栈。 POPA:将堆栈中的内容依次弹出到AX、CX、DX、BX、SP和BP寄存器 2.位操作指令 NOT:对一个字节进行取反操作,即将0变为1,将1变为0。 SHL:对一个字节进行左移操作,左边空出的位用0填充。 SHR:对一个字节进行右移操作,右边空出的位用0填充。 SAR:对一个字节进行算术右移操作,右边空出的位用符号位填充。 |
实验报告(六)
实验项目 |
汇编语言程序设计 |
实验性质 |
综合性实验 |
实验人员 |
|
实验内容 |
1. 数据传送指令操作 2. 堆栈及位操作 |
目的和要求 |
1.掌握常用传送指令的使用方法 2.了解各种状态标识的意义及指令执行对状态标识的影响 |
重点与难点 |
重点: 堆栈指令 难点: 各种指令执行对标志位的影响 |
实 验 进 程 |
实验内容布置与实施 1.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102 MOV BX,0304 MOV CX,0506 PUSH AX PUSH BX PUSH CX POP AX POP BX POP CX 则: (ax)=0506 (IP)=010D (SP)=FFF9 (bx)=0304 (IP)=010E (SP)=FFFB (cx)=0102 (IP)=010F (SP)=FFFD 1.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H单元中的内容进行交换。试编写以上程序,并上机验证结果。 3. 分析并执行下列指令序列后的结果: MOV AL,10110101B (B5H) AND AL,00011111B (1FH) OR AL,11000000B (C0H) XOR AL,00001111B (0FH) NOT AL (AL)=25H 4.通过下述程序段的输入和执行来熟悉 Debug的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: DATA SEGMENT STRING1 DB HAPPY ASM LEN1 EQU $-STRING1 STRING2 DB HAPPYAS LEN2 EQU $-STRING2 MSG1 DB"Match!',0DH,OAH,'$' MSG2 DB ‘No match!',ODH,OAH,'$ DATA ENDS CODE SEGMENT ASSUME CS;CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS, AX MOV ES,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,LEN1 LENCMP : MOV DX,[LEN2] CMP CX,DX COMPARE: MOV AL,[SI] MOV BL,[DI] CMP AL,BL INC SI INC DI DEC CX JNZ COMPARE MATCHMATCH: LEA DX,MSG1 JMP DISP DISMATCH: LEA DX,MSG2 DISP:MOV AH,09H INT21H MOV AH,4CH INT21H CODE ENDS END START 逐条分析程序,并运行程序填写结果。 屏幕显示 Match! DATA SEGMENT STRING1 DB 'HAPPY ASM' LEN1 EQU $-STRING1 STRING2 DB 'HAPPY ASM' LEN2 EQU $-STRING2 MSG1 DB 'Match!',0DH,0AH,'$' MSG2 DB 'No match!',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,LEN1 LENCMP: MOV DX,[LEN2] CMP CX,DX JNE DISMATCH COMPARE: MOV AL,[SI] MOV BL,[DI] CMP AL,BL JNE DISMATCH INC SI INC DI DEC CX JNZ COMPARE MATCHMATCH: LEA DX,MSG1 JMP DISP DISMATCH:LEA DX,MSG2 DISP:MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START |
思考题 |
1.整理出运行正确的各题源程序段和运行结果。 2.写出第2题中的程序分析过程。 答:073F:0100 MDV AX,1111: 将AX寄存器的值(即1111)存储到内存地址为0x0100的单元中。073F:0103 MOU BX,2222: 将BX寄存器的值(即2222)存储到内存地址为0x0103的单元中。073F: 0106 MOU DS[ 0010 ] , 3333: 将DS[0010]单元的值(即3333)存储到内存地址为0x0106的单元中。073F: 010C XCHG AX,BX: 将AX寄存器的值与BX寄存器的值交换。073F: 010E XCHG BX,DS[0010]: 将BX寄存器的值与DS[0010]单元的值交换 |
作业 |
|
课后自我 总结分析 |
在进行位操作时,需要注意一些细节。首先,我们需要明确操作的位数和位置,以确保对正确的位进行操作;其次,我们需要了解不同指令之间的区别和用法,以避免出现错误的结果。总的来说,汇编位操作是计算机科学中一个非常基础且重要的知识点。通过学习和掌握位操作,我们可以更好地理解和应用计算机底层的原理和机制,提高程序的效率和灵活性。 |
文章浏览阅读1k次。1、HTML5 Web SQL 数据库 Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。2、核心方法 以下是规范中定义的三个_方式准则的定义
文章浏览阅读4.1k次,点赞2次,收藏6次。spring Boot 中使用线程池异步执行多个定时任务在启动类中添加注解@EnableScheduling配置自定义线程池在启动类中添加注解@EnableScheduling第一步添加注解,这样才会使定时任务启动配置自定义线程池@Configurationpublic class ScheduleConfiguration implements SchedulingConfigurer..._springboot启动后自动开启多个线程程序
文章浏览阅读1.1k次。在项目的target文件夹下把之前"mvn clean package"生成的压缩包(我的是jar包)删掉重新执行"mvn clean package"再执行"mvn clean install"即可_mvn clean install有errors
文章浏览阅读974次。Navicat连接mysql数据库时,不断报1405错误,下面是针对这个的解决办法:MySQL服务器正在运行,停止它。如果是作为Windows服务运行的服务器,进入计算机管理--->服务和应用程序------>服务。如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。创建1个文本文件(此处命名为mysql-init.txt),并将下述命令置于单一行中:SET PASSW..._nvarchar链接不上数据库
文章浏览阅读2.2k次。Python的requests模块是一个常用的HTTP库,用于发送HTTP请求和处理响应。_python requests 参数
文章浏览阅读2.7w次,点赞7次,收藏50次。APT攻击APT攻击是近几年来出现的一种高级攻击,具有难检测、持续时间长和攻击目标明确等特征。本文中,整理了近年来比较典型的几个APT攻击,并其攻击过程做了分析(为了加深自己对APT攻击的理解和学习)Google极光攻击2010年的Google Aurora(极光)攻击是一个十分著名的APT攻击。Google的一名雇员点击即时消息中的一条恶意链接,引发了一系列事件导致这个搜_2010谷歌网络被极光黑客攻击
文章浏览阅读1.1k次。JS代码 /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { setTimeout( function(){ wx.showToast({ title: '黄菊华老师', }) },2000 ) },说明该代码只执行一次..._微信小程序 settimeout 向上层传值
文章浏览阅读48次。uploadify2.1.4如何能使按钮显示中文博客分类:uploadify网上关于这段话的搜索恐怕是太多了。方法多也试过了不知怎么,反正不行。最终自己想办法给解决了。当然首先还是要有fla源码。直接去管网就可以下载。[url]http://www.uploadify.com/wp-content/uploads/uploadify-v2.1.4...
文章浏览阅读9.6k次,点赞5次,收藏36次。戴尔服务器安装VMware ESXI6.7.0教程(U盘安装)一、前期准备1、下载镜像下载esxi6.7镜像:VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso这里推荐到戴尔官网下载,Baidu搜索“戴尔驱动下载”,选择进入官网,根据提示输入服务器型号搜索适用于该型号服务器的所有驱动下一步选择具体类型的驱动选择一项下载即可待下载完成后打开软碟通(UItraISO),在“文件”选项中打开刚才下载好的镜像文件然后选择启动_vmware-vcsa-all-6.7.0-8169922.iso
文章浏览阅读2k次。百度语音技术永久免费的语音自动转字幕介绍基于百度语音技术,识别率97%无时长限制,无文件大小限制永久免费,简单,易用,速度快支持中文,英文,粤语永久免费的语音转字幕网站: http://thinktothings.com视频介绍 https://www.bilibili.com/video/av42750807 ...
文章浏览阅读7.6k次,点赞2次,收藏9次。Instrumentation是一种直接修改程序二进制文件的方法。其可以用于程序的调试,优化,安全等等。对这个词一般的翻译是“插桩”,但这更多使用于软件测试领域。【找一些相关的例子】Dyninst可以动态或静态的修改程序的二进制代码。动态修改是在目标进程运行时插入代码(dynamic binary instrumentation)。静态修改则是直接向二进制文件插入代码(static b_dyninst
文章浏览阅读2.9k次。部署asp网站到云服务器 内容精选换一换通常情况下,需要结合客户的实际业务环境和具体需求进行业务改造评估,建议您进行服务咨询。这里仅描述一些通用的策略供您参考,主要分如下几方面进行考虑:业务迁移不管您的业务是否已经上线华为云,业务迁移的策略是一致的。建议您将时延敏感型,有快速批量就近部署需求的业务迁移至IEC;保留数据量大,且需要长期稳定运行的业务在中心云上。迁移方法请参见如何计算隔离独享计算资源..._nas asp网站