ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:28.38KB ,
资源ID:21292653      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21292653.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言指导私人注释版Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言指导私人注释版Word格式.docx

1、并注意标志位有无变化。2、加减法指令:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。3、带进位加减法:1)用A命令在内存200H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检

2、查并记录有寄存器及CF内容。实验报告要求:1、16进制数加减法手算结果及实验结果2、8086常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录 (列出自编程序)。附:DEBUG 使用:1、打 DEBUG 进入 DEBUG,显示提示苻 2、退出DEBUG命令:Q3、显示内存命令:D 起始地址 结束地址4、修改内存命令:E 起始地址,连续修改打空格键。打回车键退出E命令。5、检查寄存器命令:R标志位显示 1 0CF CY NCZF ZR NZSF NG PLAF AC NAOF OV NVPF PE PODF DN UPIF EI DI6、修改寄存器命令:R 寄存器名7、小汇编命令:A 起

3、始地址,不输入指令打回车键退出A命令。8、反汇编命令:U 起始地址 结束地址9、文件命名命令:N 盘号:文件名10、读文件命令:L 内存地址11、写文件命令:W 内存地址10、读扇区命令:L 内存地址 盘号(0-A:,1-B:) 扇区号 扇区数11、写扇区命令:W 内存地址 盘号 扇区号 扇区数12、运行命令:G=起始地址 结束(断点)地址13、单步命令:T=起始地址 运行指令数,进入子程序内部。14、单步命令:P=起始地址 运行指令数,不进入子程序内部。15、内存搬家命令:M 起始地址 结束地址 目的地址实验二 内存操作数及寻址方法 1、8086系统中数据在内存中的存放方式和内存操作数的几种

4、寻址方式。2、8086指令:INC+1,DEC-1,LOOP,INT 3中断,INT 20H输出,寄存器SI,DI。3、8086汇编语言伪操作:BYTE PTR,WORD PTR。实验内容和步骤:一、内存操作数及各种寻址方式使用:内容:MOV AX,1234 MOV 1000,AXMOV BX,1002MOV BYTE PTRBX,20MOV DL,39 立即寻址INC BX 1002+1=1003MOV BX,DLDEC DL 39-1=38MOV SI,3 立即寻址MOV BX+SI,DLMOV BX+SI+1,DLMOV WORD PTRBX+SI+2,2846 相对地址寻址步骤:1)用

5、A命令键入上述程序,并用T命令逐条运行。2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。注意D命令显示结果中右边的ASCII字符及双字节数存放法。思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。二、求累加和程序:程序:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,BXADC AH,0INC BXJ: LOOP LOPINT31)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。2)用命令N AA将此程序命名为文

6、件AA(文件名可任取)。3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)4)用命令W 100将此程序存到AA命名的磁盘文件中。5) 用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。6) 用命令Q退出DEBUG.1、各项实验结果记录。实验三 汇编语言程序上机过程1、掌握常用工具软件MASM和LINK的使用。2、伪指令: SEGMENT段定义开始,ENDS定义结束,ASSUME连接到一起,END程序入口所对应的结束标记与start对应,OFFSET取标号的偏移地址,DUP重复操作,保留空间。3、利用的 1号功能实现键盘输

7、入的方法。获取键盘ACS代码存到AL4、了解.EXE可以分段、不超过1M的文件和.COM只有一个段或代码、最大64K 256*256-1文件的区别及用INT 21H 4C号功能返回系统的方法。data segment /定义数据段message db This is a sample program of keyboard and displydb 0dh,0ah,Please strike the key!,0d回车h,0a换行h,$/定义显示的话data ends/结束数据段定义stack segment para stack堆栈段类型 stack连接后类型完整/定义堆栈断db 50 du

8、p(?)/堆栈段保留50的空间stack endscode segment代码段连接起来assume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset message找到message的地址显示话mov ah,9显示一个字符串int 21hagain: mov ah,1接受键盘输入代码放入al中cmp al,1bh与1b(ESC键)比较je等于 exit相等掉抓不相等cmp al,61h不等和a比较,小于jc小于 ndcmp al,7ah大于z相比ja大于 nd,and al,11011111b小写转换成大写nd:

9、 mov dl,almov ah,2输出1个字符在dl中jmp againexit: mov ah,4chcode endsend start实验步骤:1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3、用TYPE命令显示1产生的.LST文件。4、用LINK将.OBJ文件连接成可执行的.EXE文件。5、在DOS状态下运行LINK产生的。EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ES

10、C键可返回DOS。若未出现预期结果,用DEBUG检查程序。实验报告:1、汇编,连接及调试时产生的错误,其原因及解决办法。2、思考:1)若在源程序中把INT 21H的H省去,会产生什么现象?2)把 INT 21H 4CH号功能改为 INT 20H,行不行?实验四 数据串传送和查表程序1、堆栈。堆栈指示器SP和堆栈操作指令PUSH。POP。2、段寄存器和物理地址计算。段地址+便宜地址3、查表法和查表指令XLAT。4、数据串传送程序和数据串传送指令MOVS。STOS及重复前辍REP。5、循环指令ROL。逻辑与指令AND和清方向位指令CLD。6、伪操作指令DB。实验内容及步骤:一、利用查表方法把DX的

11、内容(16进制数)转换成ASCII码:1、用A命令键入下列程序:MOV BX,1000基质MOV DI,2000地址MOV CX,4循环次数 PUSH CX/MOV CL,4循环次数ROL DX,CL/一4为POP CX/恢复MOV AL,DL/AND AL,OF/提取最高4位XLAT/CLD/STOSB/吧al内送送给diLOOP LOP/INT 20/2、用A命令在1000H处键入下列ASCII码并用D命令检查之:A1000DB 0 ,1, 2, 3, 4, 5, 6, 7, 8 ,9 ,A ,B ,C, D, E, FD1000Rdx7f8e G100 118D2000看堆栈t=100

12、1TtttD?37 46 38 11用D命令检查时注意左边的ASCII码值和右边的字符。3、用R命令给DX送一个四位的16进制数(例737F838E45)。4、用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结果,特别是SP和堆栈内容(用D命令检查)Ffee-ffec5、用G命令将此程序运行到结束,并用D命令检查2000H处所转换的结果。可注意屏幕右边的ASCII字符与DX是否一致。二、数据串搬家程序:MOV SI,100E基质MOV DI,1010MOV CX,0FMOV SI 1500MOV DI 1002LOP1: MOV AL,SIMOV DI,ALDEC SI +1DEC

13、DILOOP LOP INT 20D10022、用A命令DB伪指令在1000H键入下列字符串:Db IBM_PC COMPUTERD1500GD100a103Mov di 1002G=100 111IBIBIBIBIBIBIBIBIBI 1000I1500I1002 I1002I B1001B1003B1001BM1002IM1004I1002M1004M-100310051003-1005-P10041004P1006PC10051005C1007C3、用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。4、若此程序中的目的地址改为1002H,再运行此程序,看能不能把1000H

14、开始的字符串搬到1002H开始的地方去?修改程序以做到这一点。三、段寄存器概念及字符串传送指令练习:MOV SI,0MOV DI,0MOV AX,1000MOV DS,AXMOV AX,1500MOV ES,AXCLDREP MOVSB2、用A命令DB伪指令在0000+0000=10000处键入字符串IBM_PC COMPUTER,并用D0F00:1000D100:1234命检查之3、用D命令检查0F000+1000=10000处内容,看是否一样。为什么?4、用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。5、修改此程序,使ES与DS为同一值,以减少一条指令,而源

15、物理地址和目的物理地址(是多少?)仍和原来一样。1、各项实验记录和思考题。2、要求你修改的程序的清单(修改后)和调试记录。实验五 屏幕字符显示程序 JMP,绝对跳转,,ROR,循环右移,,XOR,异或,,HLT,暂停,。2、利用DOS功能调用INT21H的2号,显示字符,和9号,显示一个字符串,功能进行屏幕显示的方法。3、直接向视频RAM(VRAM)送ASCII码进行屏幕显示的方法。4、IBM-PC机的ASCII码表及控制字符。5、命令(.COM)文件及使用方法。6、利用Break退出程序的方法及局限性。一、利用INT 21H 9H号功能调用显示字符串。1、用A命令在100H处键入下列程序:M

16、OV AH, 9MOV DX,110INT 21 ,显示JMP $ ,死循环延时$为本指令的地址Mov AH,1INT 21INT 20 ,退出2、用A命令在110H处键入下列字符串的ASCII码:DB This is a sample!3、用N,name命令和W命令将此程序(包括数据区)存入文件名为AA。COM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。4、用Q命令退出DEBUG。5、在DOS命令下打AA,运行此程序,即在屏幕上显示字符串,若不出现,用DEBUG检查程序有无错误。二、利用INT 21H 2号功能显示字符:XOR DL,DL ,按位异或,清零=MOV DL,0=SUB

17、 DL,DLMOVCX,100 ,256MOV AH,2INT 21 吧DL里德00开始显示INC DL 家1PUSH CX 保护cx=100MOV CX,8 延时参数改成1000看效果!DELY: PUSH CX 延时程序MOV CX,0 LOOP J lop-cxPOP CXLOOP DELYLOOP LOP2、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?3、按CTRL+BREAK退出此程序,若一次不行可多做几次。三、直接向VRAM送ASCII码显示字符MOV AX

18、,B800XOR AL,ALXOR BX,BXMOV CX,100 要显示100次 MOV BX,AL 送数INC BX 去掉文字颜色INC ALPUSH CXMOV CX,8 改成1000 延时程序 PUSH CX LOOP J2、用N命令和W命令将此程序存入BB.COM文件中。(一定要先存入!)3、用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H2号功能调用有何不同?四。自编一个程序,要求显示AX的内容,即能显示AX=xxxx。调试时AX的内容可用R命令赋值,也可用MOV指令赋值。1、各项实

19、验记录及观察体会。2、利用INT 21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?3、自编程序草稿及调试结果。实验六 条件转移指令JZ,JNZ,JC,JNC,CMP,SHR。2、程序:用字符搜索法确定字符串长度。3、程序:16进制数化为ASCII码的一般方法。一、用字符搜索法确定字符串长度:1、用A命令在100H开始的内存处键入下列程序:JMP STARTThis is the program to measurethe length of a string!START: MOV BX,102MOV AL,24XOR CL,CL CMP AL,BXJZ EXITINC

20、CLJMP LOPEXIT: INT32、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?二、16进制数化ASCII码的一般方法(显示内存内容)MOVSI,0MOVBL,10 MOVDL,SIMOVCL,4SHRDL,CLCMPDL,0AJC J1ADD DL,7J1: ADD DL,30MOV DL,SIAND DL,0FCMP DL,0AJC J2J2:MOV DL,20INC SIDEC BLJNZ LOP2、用N,W命令将此程序用CC.COM文件名存入磁盘。3、用Q命令退出DEBUG。4、在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从

21、0000H开始的16个字节的内容,若有错误,用DEBUG检查之。5、自编程序:修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用.代替。三、综合程序(选做):测量一字符串长度,并用16进制数显示之This is a program to measure the length of a string。DB 0D,0Athe length of the string is: $ MOV AH,9MOV DX,102MOV BX,101MOV AL,MOV DH,FF INC BXINC DHCMP AL,BXMOV CH,2

22、MOV CL,4 ROL DH,CLMOV DL,DH AND DL,0FADD DL,30 CMP DL,3AJC J ADD DL,7 MOV AH,2DEC CHJNZ LOP1键入此程序,存入?.COM文件中并在DOS命令状态下直接运行之,若未出现预期结果,用DEBUG检查有否错误?1、自编程序草稿及调试后的正确程序。2、实验体会。实验七 分枝程序1、掌握利用间接转移指令JMP BX实现多岔分枝的方法。2、宏替换指令MACRO及ENDM。3、符号扩展指令CBW。实验程序:Disp名字 macro定义 msg 宏替换函数lea dx,msg 取宏的偏移地址mov ah,9 寄存器AH数值

23、设为9 8位int 21h 调用指令mov ah,4ch 调用4c给ah 4CH16位int 21h 21号中断endm 宏定义指令结束stack segment stack 伪指令 定义一个堆栈段stackdb 256 dup(0) 预留定义256字节清零stack ends 栈堆段定义结束 data segment 定义数据段parm db 16 dup(?) 定义16个字节空间给parmbrtable dw offset bra,offset brb,offset brc 声明变量读取地址存dwdw offset brd,offset bre,offset brfmsga db I like my IBM-PC! 将后面存到msgamsgb db How are you!同上msgc db Nibao College$msgd db This is a sample$msge db Wellcome use my coputer!$ 同上msgf db Theassemder language of 8086$errms db Error! invalid parameter!data ends 定义数据段结束

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1