汇编语言实验3
汇编语言实验报告1~7
汇编语言实验报告1~7实验一:数据传输指令、算术指令、逻辑指令的使用实验内容:利用汇编语言,编写一个程序,实现两个整数相加,并将结果存入第三个变量中实验步骤:1. 声明三个变量a、b、c2. 将10存入a,将20存入b3. 将a的值传入al,将b的值传入bl4. 使用add指令将al和bl相加,将结果存入al5. 将al的值传入c6. 显示c的值实验结果:a db 10mov al,aadd al,blint 21hmov ax,4c00h实验二:分支指令的使用实验内容:利用汇编语言,编写一个程序,实现当输入的值为正数时,输出"I'm positive!";当输入的值为负数时,输出"I'm negative!";当输入的值为零时,输出"I'm zero!"1. 定义一个变量num2. 接收用户输入,并将其存储在num中3. 用test指令判断num的值4. 当num=0时,执行输出"I'm zero!"的指令7. 退出程序num db ?lea dx, promptsub al, '0'test num, numjz zerojs negjmp positiveneg:output:zero_msg db 'I am zero!$'prompt db 'Please enter a number:', 0dh, 0ah, '$'1. 定义变量i、sum,分别表示累加的数字和累加和2. 将i赋初值1,sum赋初值03. 进入循环5. 使用inc指令将i加16. 使用cmp指令将i与10比较,如果i小于等于10,继续循环,否则退出循环7. 输出结果mov bx, iloopStart:inc bx实验四:过程调用的使用2. 循环遍历1到100之间的每个数3. 用一个for语句嵌套一个for语句判断该数是否为质数4. 用两个自定义的子程序is_prime和output输出结果call is_primeskip:cmp i, 100prime_loop:div blretje newlinejmp done实验目的:掌握字符串操作指令的使用实验内容:利用汇编语言,编写一个程序,将字符串"SJTU"改为字符串"MIT"1. 定义字符串SJTU和MIT2. 定义两个变量i和len,分别表示字符串的下标和长度3. 使用movsb将SJTU的值传到MIT中4. 输出MITSJTU db 'SJTU'lea si, SJTUstringLoop:实验内容:利用汇编语言,编写一个程序,实现将输入的字符串写入一个文件中,然后再读取该文件中的字符串并输出2. 打开文件3. 将字符串写入文件中4. 关闭文件6. 读取文件内容8. 输出读取的字符串fileName db 'test.txt'content db 32 dup(?)mov cx, word ptr [content]实验内容:利用汇编语言,编写一个程序,在系统按下Ctrl+C时,输出一条信息并退出1. 声明函数handleCtrlC2. 获取中断21的地址,将其存储到文件头中org 100hmov [old_int_21h], es:bxmov dx, offset handleCtrlCend开始:。
汇编语言实验报告三
汇编语言实验报告(实验三)一.实验目的1.掌握程序设计中的子程序结构;2.熟练使用过程伪指令、子程序调用和返回等汇编语言的指令编写子程序;3.掌握数制转换方法;4.掌握利用DOS系统功能调用进行字符输入及字符输出(显示)的方法。
二.程序说明1.编写十进制到十六进制转换程序。
要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来2.已知从BUF开始存放了10个16进制字数据,编程求出这10个数中的最大数,(将最大数存入MAX字节单元),并将其以10进制数的形式在屏幕上显示出来。
(提示:以上两题都要求采用子程序的方法)3.从键盘上输入一行字符,如果这行字符比前一次输入的一行字符长度长,则保存该行字符,然后继续输入另一行字符;如果它比前一次输入的行短,则不保存这行字符。
按下‘$’输入结束,最后将最长的一行字符显示出来。
(选作)(提示:定义数据段,包括两个变量STRING和BUFFER,格式如下:STRING DB 0 ;存放字符的个数DB 80 DUP (?), 0DH,0AH,‘$’;存放前一次输入的字符串,兼作显示缓冲区BUFFER DB 80 ;输入字符串的缓冲区,最多输入80个字符DB ?DB 80 DUP (20H)然后利用0AH号DOS系统功能调用收入字符,用09H号系统功能调用输出。
)三.设计思想1.先调用子函数decibin由键盘输入一个数字后,先减去30h把ASCII码形式转换为十进制数形式,保存在bx中,再调用子函数binihex,用十六进制形式显示bx中的数。
2.利用子函数max依次比较,将buf中10个字的最大值放到bx中,再一次除以10000,1000,100,10,并分别把余数放到bx,商放到dl,并转换为ASCII码格式,即把十六进制转为10进制,最后调用2号功能输出结果即可。
3.调用0ah功能,将输入字符放到缓冲区,并把之后输入的字符串依次与缓冲区内容相比较,若小于缓冲区内容,则被替换,直到输入$即停止输入字符串为止,输出最终存放在string 中的字符串的内容。
北京理工大学汇编语言实验报告实验三字符串操作实验
北京理工大学汇编语言实验报告实验三字符串操作实验实验三字符串操作实验一、实验目的1)熟悉串操作指令的功能与应用;2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;3)了解汇编语言字符串处理基本流程;二、实验软硬件环境1)硬件环境:惠普64位一体化计算机及局域网; 2)软件环境:windows 8,红蜘蛛管理系统,MASM for Win dows三、实验相关知识1)字符串操作流程SI寄存器保存源串首地址;DI寄存器保存目的串首地址;CX寄存器保存字符串长度;CLD或STD指令设置字符串处理方向;2)重复前缀指令重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX 中值减至0时,停止重复执行,继续执行下一条指令。
寄存器的E内容条件为复前罡重复与操作直配合工作的字符串处理指令有MOVSSTOS^ LODS当REPE/REP判断计数寄存器的内容CX是否为0或ZF=O(即比较的两个操作数不等)亠只要满足一个则重复执行结束,否则继续执行。
可以与REPE/REP配合工作的串指令有CMP和SCAS0或體茴比较P判个操数数相等的内容要满足一个则重复执行结束,否则继续执行。
可以与REPE/REP配合工作的串指令有CMPS口SCAS3)字符串操作指令lodsb、lodsw :把DS:SI 指向的存储单元中的数据装入AL或AX然后根据DF标志增减SI ;stosb、stosw :把AL 或AX 中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI ;movsb movsw把DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF 标志分别增减SI和DI ;scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;cmpsb cmpsw把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;rep :重复其后的串操作指令。
汇编上机实验报告
汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
最新实验三汇编语言程序设计3
实验三汇编语言程序
设计3
实验三汇编语言程序设计(3)
一、实验目的
进一步掌握汇编语言程序的编程方法和技巧
二、实验内容
1. 编写一个程序,进入保护模式,并在保护模式下用不同属性在屏幕上显示字符串(字符串内容自定),然后返回实模式。
2. 编写一个游戏程序,实现如下功能:
◆首先用蓝色清屏
◆在在屏幕中央显示由字符串“-============#”组成的黄色的小蛇,#为蛇
头,-为蛇尾
◆按下方向键可以控制上述小蛇按蛇行方式在屏幕上行走
◆在行进过程中,蛇头只能左转、右转或继续前进,不能掉转180度
提示:
①通过调用INT 16H的0号功能可以读取光标控制键的扩展码
光标控制键:↑↓←→
扩展码(十进制):72 80 75 77
②参考教材的P146-148了解在指定位置用指定属性显示字符的方法
3. (选做)修改期中试题中的浮点数计算程序,实现能够计算加、减、乘、除四则运算的计算器功能。
例如,用户输入2.3+1.1,则输出3.4;用户输入非法的表达式,则给出出错信息。
三、实验报告要求
前两个实验内容的程序说明和程序清单。
北京理工大学汇编语言实验报告3字符串操作实验(设计性实验)
组 号:
同组搭档:
成 绩:
一、实验要求和目的
1.了解汇编语言字符串处理基本流程; 2.熟悉汇编语言字符串处理基本指令的使用方法; 3.掌握利用汇编语言实现字符串处理的程序设计方法。
二、软硬件环境
1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
str1 db 'fs3qas' count equ $-str1 DATAS ENDS copy segment
str2 db count dup(?) copy ends
CODES SEGMENT ASSUME CS:CODES,DS:DATAS,es:copy
START: MOV AX,DATAS MOV DS,AX mov es,dx;开始复制 mov cx,count cld rep movsb MOV AH,4CH INT 21H
这里面显示的bx=1,符合实际情况 若修改一下源代码,把字符串多加几个‘.’则结果如下:
代码中有3个‘.’运行结果中bx=3,符合实际情况,源代码题设要求
五、实验要求与提示
1、实验要求 (1)画出各程序流程图; (2)列出程序清单,加上适量注释; (3)回答思考问题; (4)记录实验结果; (5) 完成实验报告(实验材料上的内容简写,自己的工作要详尽)。 2、实验提示: A)自动获取字符串长度,可以利用地址计数器$ 表达式获得。 B)字符/字符串输入输出 主要利用 DOS 的INT 21H 系统功能调用来实现字符或字符串的输入/输出操作,其中1 号功能表示输入字符;2 号功能表示输出字符;0A 号功能表示输入字符串;09 号功能表 示 输出字符串。如果大家想现在使用可以详细查阅相关资料,在后面的课程内容和实验上会详 细学习,这里简单示例提示一下: (1)显示单个字符可以用DOS 的INT 21H 的2 号功能,将字符放在DL 寄存器中,2 号放在AH 寄存器中。 MOV AL, ’*’ MOV AH,2 INT 21H (2)数据区中的字符串应以$结尾,DS:DX=串地址;如果提前已经定义需要显示的字 符串,显示字符串可以用如下功能调用: LEA DX,STR MOV AH,9 INT 21H
汇编语言实验报告
汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。
2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。
4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。
4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。
4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。
5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。
希望对你有所帮助!。
汇编实验三报告 分类统计字符个数COUNT_CHAR
计算机学院计算机科学与技术专业8 班学号姓名协作者_________ 教师评定_________________实验题目实验用2.3分类统计字符个数COUNT_CHAR一、实验目的与要求学习用汇编语言编写与设计分支循环程序。
题目:分类统计字符个数COUNT_CHAR二、实验内容程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other 为名的存储单元中。
三、程序代码;******************************************Data segmentstring1 db 'Input your string:$'string2 db 'Digit:$'string3 db 'Letter:$'string4 db 'Other:$'Digit db 0Letter db 0Other db 0data ends;*******************************************prognam segment;-----------------------------------------------------------------main proc farassume cs:prognam,ds:datastart:push ds ;保留现场sub ax,axpush axmov ax,datamov ds,axlea dx,string1 ;输出string1mov ah,9int 21hmov c x,80L1:mov ah,1 ;输入字符int 21hcmp al,0dh ;若是回车则结束jz overcmp al,30h ;若小于30h(0)则others+1jb otherscmp al,39h ;若大于39h(9)则跳转L2继续比较ja L2jmp digits ;否则digits+1L2:cmp al,41h ;若小于41h(A)则others+1jb otherscmp al,5ah ;若大于5ah(Z)则跳转L3继续比较ja L3jmp letters ;否则letters+1L3:cmp al,61h ;若小于61h(a)则others+1jb otherscmp al,7ah ;若大于7ah(z)则others+1ja othersjmp letters ;否则letters+1digits:inc digitjmp over1others:inc otherjmp over1letters:inc letterjmp over1over1:loop L1over:call e ndlinelea dx,string2 ;输出string2mov ah,9int 21hsub ax,axmov al,digitcall displaycall e ndlinelea dx,string3 ;输出string3mov ah,9int 21hsub ax,axmov al,lettercall d isplaycall e ndlinelea dx,string4 ;输出string4mov ah,9int 21hsub ax,axmov al,othercall d isplayretmain endp;------------------------------------------------------------------------------ endline proc near ;输出回车与换行mov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hretendline endp;----------------------------------------------------------------------------------- display proc near ;输出结果mov dl,aladd dl,30h ;0的ascii码是30mov ah,2int 21hretdisplay endp;--------------------------------------------------------------------------------------- prognam ends;********************************************************* end s tart四、运行结果附录:由于这个实验一开始做错了题目,实验课上机检查是检查了该程序实验2.2查找匹配字符串程序代码:;---------------------------------------------newline macro ;回车换行的宏定义mov ah, 02hmov dl, 0dhint 21hmov ah, 02hmov dl, 0ahint 21hendm;------------------------------------------------data segmentmaxlenk db 8 ;关键字的最大长度factlenk db ? ;关键字的实际长度keyword db 8 dup(?) ;关键字的存储maxlens db 32 ;字符串的最大长度factlens db ? ;字符串的实际长度sentence db 32 dup(?) ;字符串的存储info1 db 'Enter Keyword:$'info2 db 'Enter Sentence:$'mess0 db 'Match at location:$'mess1 db 'No match.$'mess2 db ?,?,'H of the sentence.$'data ends;------------------------------------------------------stack segment stackstack ends;------------------------------------------------------code segment;------------------------------------------------------main proc farassume cs:code, ds:data, es:data, ss:stackstart:push dssub ax, axpush axmov ax, datamov ds, axmov es, axmov ah, 09h ;输出字符串信息lea dx, info1int 21hmov ah, 0ah ;输入关键字lea dx, maxlenkint 21hbegin:newlinemov ah, 09hlea dx, info2int 21hmov ah, 0ah ;输入字符串lea dx, maxlensint 21hnewlinelea si, keyword ;关键字的首地址赋予silea bx, sentence ;字符串的首地址赋予bxlea di, sentence ;字符串的首地址赋予dimov dl, 00h ;对dl清零cld ;方向标志位清零,字符串地址递增again:mov cl, factlenkrepz cmpsbjz matchmov al, factlenssub al, factlenkjs next1inc allea si, keywordinc bxmov di, bxinc dxcmp dl, aljl againnext1:lea dx, mess1mov ah, 09hint 21hjmp beginmatch:lea dx, mess0mov ah, 09hint 21hmov ax, bxlea bx, sentencesub ax, bxmov bx, 0001hadd ax, bxand ax, 00ffhxchg ax,bxmov ch, 2rotate:mov cl,4hrol bl,clmov al,bland al,0fhadd al,30hcmp al,3ahjl printadd al,7hprint:mov ah,02hmov dl,alint 21hdec chjnz rotatemov ah,09hlea dx,mess2int 21hjnl beginretmain endpcode endsend start运行结果:。
汇编语言上机实验汇总
汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
1.实验一:环境搭建-目标:搭建汇编语言开发环境2.实验二:基本语法-目标:学习汇编语言的基本语法和指令格式-内容:编写一个简单的汇编程序,包括数据段、代码段和堆栈段,以及常用指令(例如MOV、ADD、SUB、JMP等)的使用。
3.实验三:寄存器和内存操作-目标:熟悉汇编语言中的寄存器和内存的操作-内容:编写一个汇编程序,通过MOV指令将数据从内存中加载到寄存器中,然后进行运算,并将结果存储回内存。
4.实验四:条件分支和循环-目标:掌握汇编语言中的条件分支和循环结构-内容:编写一个汇编程序,使用条件分支指令(例如CMP、JE、JNE 等)实现一个简单的判断语句;然后使用循环指令(例如LOOP)实现一个简单的循环结构。
5.实验五:子程序和参数传递-目标:学习如何创建和调用子程序,并传递参数-内容:编写一个汇编程序,其中包含一个子程序,该子程序接受两个参数并返回它们的和。
然后在主程序中调用该子程序,并输出结果。
6.实验六:中断和异常处理-目标:了解中断和异常处理机制,并在汇编程序中处理中断或异常-内容:编写一个汇编程序,其中包含一个中断处理程序,当发生特定的中断时,该处理程序将执行一些特定的操作。
7.实验七:串操作和文件操作-目标:学习汇编语言中的串操作和文件操作-内容:编写一个汇编程序,使用串操作指令(例如MOVS、LODS、STOS等)操作字符串;然后使用文件操作指令(例如OPEN、READ、WRITE 等)读取或写入文件。
8.实验八:图形和音频处理-目标:了解汇编语言中的图形和音频处理- 内容:编写一个汇编程序,使用图形库(例如BGI、OpenGL、DirectX)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
汇编语言实验报告
实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。
汇编语言程序设计实验报告三(子程序设计实验)
汇编语言程序设计实验报告三(子程序设计实验)汇编语言程序设计实验报告三(子程序设计实验)实验目的掌握主程序与子程序之间的调用关系及其调用方法。
掌握子程序调用过程中近程调用与远程调用的区别。
熟练掌握码型变换的程序。
实验内容从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。
要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。
数据可循环输入,遇‘00’结束。
实验准备预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。
熟悉键盘输入和字符显示的程序段的编制。
实验步骤编辑、汇编源程序,生成可执行文件。
执行程序,检查输入、输出结果,看是否正确。
如不正确,用DEBUG检查,修改源程序,再汇编、运行,直到程序正确为止。
用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。
实验报告要求分析近程调用和远程调用的主要区别。
用DEBUG命令观察执行过程有何不同。
分析实验结果及所遇到的问题的解决方法。
程序流程图开始TRAN程序标准序开始读入十进制数据放AX中AXAXAND0F0FH是00?YBLALN调用转换子程序结束AL左移3位回车、换行BL左移1位于ALAL+BL主程序流程图ALAL+AHRET转换子程序TRAN流程图程序清单STASEGMENTSTACK’STACK’DB100DUP(0)STAENDS GSAGSEGMENTPARA‘CODE’ASSUMECS:CSAG MAINPROCFARSTRAT:PUSHDSSUBAX,AXPUSHAXREV:MOVAH,1INT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030H JEENDTRAN CALLNEARPTRTRAN CALLFARPTRCON MOVAL,0DH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP JMPREV ENDTRAN:RET MAINENDP TRANPROCNEAR ANDAX,0F0FHMOVBL,ALMOVBL,ALMOVCL,3SHLAL,CLMOVCL,1SHLBL,CLADDAL,BLADDAL,AHRETTRANENDPCSAGENDS CSBGSEGMENTPARA’CODE’ASSUMECS:CSBG CONPROCFARPUSHAXMOVCL,4 SHRAL,CL ADDAL,30H CMPAL,39H JBECON2 ADDAL,7CON2:PUSHAX MOVAL,0DH CALLFARPTRDISP MOVAL,OAH CALLFARPTRDISP POPAX CALLFARPTRDISP POPAX ANDAL,0FHADDAL,30H CMPAL,39H JBECON1ADDAL,7CON1:CALLFARPTRDISP RETCONEDNP DISPPROCFAR PUSHBXMOVBX,0MOVAH,14INT10HPOPBXRETDISPENDPCSBGENDS ENDSTART。
汇编语言程序设计实验报告
二、实验内容
P131作业29。
实验三子程序设计实验
一、实验目的
1.掌握汇编语言源程序子程序设计方法;
2.会使用CV软件工具。
二、实验内容
把实验二作为子程序,编写主程序来对能否构成三角形进行10判断。
实验四宏汇编程序设计实验
一、实验目的
1.掌握宏汇编程序编程技术及宏调用的方法;
2.主模块程序完成子程序的调用,及判断结果的显示,程序名为:ZHU.asm。
实验五混合程序的开发实验
一、实验目的
1.了解混合调用中的参数设置;
2.掌握混合调用的方法;
二、实验内容
P156第5题。
实验一单指令功能测试实验
一、实验目的
1.会使用DEBUG软件;
2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容
判断从键盘输入的ASCII码数字,若是小于等于5,显示“C”,若是大于5显示“D”。假设输入的只可能是0~9数字。
实验二完整的汇编语言程序设计实验
一、实验目的
1.掌握完整的汇编语言源程序的设计方法;
实验五多模块程序设计实验
一、实验目的
1.掌握汇编段的属性的含义;
2.掌握利用LINK将多模块连接起来的方法;
3.掌握利用库文件将多模块连接起来的方法。
二、实验内容
假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,显示“Y”,否则,显示“N”;
具体要求:
1.三角形的判断程序为一模块子程序,程序名为:ABC.asm。入口参数:字节变量a、b、c。出口参数:字节变量d=1是三角形,d=0不是三角形。
2.了解COM文件的编程方法及特点;
汇编语言(第2版)王爽著 课后实验报告详解
汇编语言实验报告班级学号学生姓名提交日期成绩实验1-1如下:用E命令将指令写入内存:用A命令将指令写入内存:实验1-2代码如下:用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。
如图:实验1-3:用D命令输入内存fff0h~fffffh,则可看到:生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有:在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。
实验1-4代码如下:内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节实验2-1:(按实验结果填空)Mov ax,ffffMov ds,axMov ax,2200Mov ss,axMov sp,0100Mov ax,[0];ax=5BEAAdd ax,[2];ax=5CCAMov bx,[4];bx=30F0Add bx,[6];bx=6026Push ax;sp=00FE;修改的内存单元的地址是2200:00FE内容是5CCA Push bx;sp=00FC;修改的内存单元的地址是2200:00FC内容是6026 Pop ax;sp=00FE;ax=6026.Pop bx;sp=0100;bx=.5CCAPush[4];sp=00FE;修改的内存单元的地址是2200:00FE内容是30F0 Push[6];sp=00FC;修改的内存单元的地址是2200:00FC内容是2F36实验截图如下:实验2-2(分析问答实验)答:因为T命令是单步中断,我们在后面学习后知道,CPU执行中断时会保留现场,即将标志寄存器,CS,IP等入栈,而实验中栈的地址正好是要查询的内存地址,所以即便未对内存单元进行写入命令,但里面的值会因为CPU要保留现场自动被改了实验3(1)代码:ASSUME CS:CODES CODES SEGMENT START:mov ax,2000hmov ss,axmov sp,0add sp,10pop axpop bxpush axpush bxpop axpop bxMOV AH,4CHINT21HCODES ENDSEND START(2)debug跟踪:(3)用debug跟踪查看PSP中的内容:可见PSP的头两个字节是CD20,与书上的一致实验4-1代码如下:ASSUME CS:CODESCODES SEGMENTSTART:mov ax,0mov ds,axmov bx,200hmov cx,64s:mov[bx],alinc alinc bxloop sMOV AH,4CHINT21HCODES ENDSEND START实验4-1运行图如下:实验4-2代码如下:ASSUME CS:CODESCODES SEGMENTSTART:mov ax,200hmov ds,axmov bx,0mov cx,64s:mov[bx],bxinc bxloop sMOV AH,4CHINT21HCODES ENDSEND START运行结果同实验4-1的一样实验4-3(补全代码)ASSUME CS:CODESCODES SEGMENTSTART:mov ax,csmov ds,axmov ax,20hmov es,axmov bx,0mov cx,16hs:mov al,[bx]mov es:[bx],alinc bxloop sMOV AH,4CHINT21HCODES ENDSEND START因为要将代码复制到0:200处,则必须知道代码的地址,和代码的长度,代码的地址在cs和IP中,代码的长度可以编译后用U命令查看后确定,这个之前随便打一个数就可以,不影响代码的长度,因为那个数占的空间和真实的长度一样,所以用U命令后在改过来即可实验4-3的运行图如下:实验5-1代码如下:DATAS SEGMENTdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hDATAS ENDSSTACKS SEGMENTdw0,0,0,0,0,0,0,0STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,stacksMOV ss,AXmov sp,16mov ax,datasmov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]MOV AH,4CHINT21HCODES ENDSEND START实验5-1运行图如下:①CPU执行程序后,程序返回前,data段中的数据为多少?答:不变如上图②CPU执行程序后,程序返回前,CS=144Ch,SS=144Bh,DS=144Ah。
汇编实验三报告
汇编语言程序设计实验报告班级:计科1班学号:姓名:实验日期 2015.10.26 成绩实验三循环程序设计采用循环程序设计,结合分支程序设计,从键盘输入无符号的字节数组array,进行从大到小排序后,显示排序后的数组各元素。
程序框图:程序清单:DATA SEGMENTARRAY DB 5 DUP(?)COUNT EQU ($-ARRAY)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,COUNT /输入数的个数送CX寄存器LEA SI,ARRAY /取数组的首地址LL3:PUSH CX /CX压栈MOV BX,0 /BX寄存器清零MOV CH,2 /循环次数为2MOV CL,4 /每次移位数为4LL2:SHL BX,CL /BX逻辑左移4位MOV AH,1 /从键盘输入一个字符(1号功能)INT 21HSUB AL,30H /AL-30HCMP AL,0AH /如果AL<0AHJB LL1 /则转至LL1SUB AL,7LL1:OR BL,ALDEC CHJNZ LL2 /≠0则转至LL2MOV [SI],BLMOV DL,20H /显示一个空格MOV AH,2 /显示一个字符(2号功能)INT 21HADD SI,1 /SI+1POP CX /CX出栈DEC CXJNE LL3 /≠0则转至LL3MOV DL,0AH /换行MOV AH,2 /2号功能INT 21HMOV DL,0DH /回车MOV AH,2 /2号功能INT 21HMOV CX,COUNT-1L2:MOV DI,CXLEA SI,ARRAYL:MOV AL,[SI]CMP AL,[SI+1] /如果AL<[SI+1]JNB L1 /则转至L1XCHG AL,[SI+1]MOV [SI],ALL1:INC SI /SI+1DEC DIJNZ LDEC CXJNZ L2MOV CX,COUNTLEA SI,ARRAYLLLL:PUSH CX /CX入栈MOV BL,[SI]MOV CH,2MOV CL,4LLL2:ROL BL,CL /BL循环左移4位MOV DL,BLAND DL,0FH /DL˄0FADD DL,30H /DL+30HCMP DL,3AH /如果DL<3AHJB LLL1 /则转至LLL1ADD DL,7LLL1:MOV AH,2INT 21HDEC CHJNZ LLL2MOV DL,20H /显示空格MOV AH,2INT 21HINC SI /SI+1POP CXDEC CXJNZ LLLLMOV AH,4CHINT 21HCODE ENDSEND START运行结果:运行结果图排序前的内存图排序后的内存图实验总结:。
汇编实验报告3
汇编实验报告3汇编实验报告3引言:汇编语言是一种低级语言,用于编写计算机程序。
在本次实验中,我们将继续学习和实践汇编语言的基本概念和技术。
本报告将详细记录我们在实验过程中所遇到的问题、解决方案和实验结果。
实验目的:本次实验的主要目的是加深对汇编语言的理解,并通过实践掌握汇编语言的基本操作和调试技巧。
通过完成实验,我们将能够编写简单的汇编程序,理解程序的执行过程和内存的使用。
实验环境:本次实验使用的是x86架构的计算机,并使用MASM汇编器进行程序的编译和链接。
我们还使用了调试器来跟踪程序的执行过程。
实验步骤:1. 阅读实验指导书和相关资料,了解本次实验的要求和目标。
2. 编写一个简单的汇编程序,实现两个数的相加功能。
程序首先要求用户输入两个数,然后将其相加并输出结果。
3. 使用MASM汇编器将程序源代码编译成目标文件。
4. 使用链接器将目标文件与运行时库链接,生成可执行文件。
5. 运行程序,并验证程序的正确性。
如果程序不能正常工作,使用调试器进行调试,找出问题的原因并进行修复。
6. 记录实验结果和遇到的问题,撰写实验报告。
实验结果:我们编写了一个简单的汇编程序,成功实现了两个数的相加功能。
程序能够正确地接收用户输入的两个数,并将其相加后输出结果。
我们通过多次测试,验证了程序的正确性。
实验中遇到的问题及解决方案:在实验过程中,我们遇到了一些问题,下面是其中的两个例子以及我们的解决方案:1. 问题:在程序运行过程中,无法正确接收用户输入的数值。
解决方案:我们仔细检查了程序的输入部分,发现在读取用户输入时,没有正确设置输入缓冲区的大小。
通过增大缓冲区的大小,我们成功解决了这个问题。
2. 问题:程序输出的结果不正确。
解决方案:我们使用调试器跟踪程序的执行过程,发现在进行相加操作时,寄存器的值被错误地覆盖了。
经过进一步的调试,我们发现这是因为在进行相加操作之前,没有正确地保存寄存器的值。
通过添加保存和恢复寄存器值的代码,我们成功解决了这个问题。
汇编语言实验报告三
实验3实验学时: 2 实验地点:二综实验日期:一、实验目的掌握汇编编程规范,熟悉编程环境。
二、实验内容1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验11)。
2、编写0号中断处理程序,使得在除法溢出发生时在屏幕中间显示“divide error!”(参见教材实验12)。
(请预习第12章并完成实验,时间不够则在课后完成)三、实验步骤算法及关键代码1. 小写字母转换大写字母DATAS SEGMENT;此处输入数据段代码db"Beginner's All-purpose Symbolic Instruction Code.", 0DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码mov si, 0call Smov si, 0call PMOV AH,4CHINT 21H;将字符串中小写字母变大写字母的子程序S: mov ah, [si]cmp ah, 30H ;判断是否到达'0'je E ;到达'0'则跳转到Ecmp ah, 61H ;判断是否为小写字母jb CONTINUE ;不是小写字母则跳转至continue cmp ah, 7AHja CONTINUEmov al, [si]and al, 11011111Bmov [si], alCONTINUE:inc sijmp SE: ret;将字符串输出的子程序P: mov ah, [si]cmp ah, 0Hje E2mov dl, [si]mov ah, 2Hint 21Hinc sijmp PE2: retCODES ENDSEND START2.零号中断程序DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码;将do0程序复制到0:200H处(安装程序)MOV SI, offset do0MOV AX, 0MOV ES, AXMOV DI, 200HMOV CX, offset do0end-offset do0cldrep movsb;设置中断向量表,使零号中断指向0:0200H地址上的程序(注册程序) MOV AX, 0MOV DS, AXMOV SI, 0MOV AX, 200HMOV [SI], AXMOV AX, 0ADD SI, 2MOV [SI], AXMOV AX, 1MOV BH, 0DIV BHMOV AH,4CHINT 21Hdo0:JMP do0startDB'divide error!'do0start:MOV AX, CSMOV DS, AXMOV SI, 202HMOV AX, 0B800HMOV ES, AXMOV DI, 12*160+36*2MOV CX, 13s: MOV DL, [SI]MOV ES:[DI], DLINC SIADD DI, 2LOOP sMOV AH,4CHINT 21Hdo0end: nopCODES ENDSEND START四、实验小结(简单说明实验过程中出现的问题和解决方法)1.JMP等跳转指令可以灵活运用2.寄存器的使用需要注意有没有被别处修改了。
汇编 实验报告
汇编实验报告汇编实验报告引言:汇编语言是一种低级语言,用于编写计算机程序。
在计算机科学领域中,汇编语言是一门重要的学科,它可以帮助我们更深入地了解计算机的内部工作原理。
本实验报告将介绍我在学习汇编语言过程中的实验经历和所学到的知识。
实验一:汇编语言的基本概念在本实验中,我首先学习了汇编语言的基本概念。
汇编语言是一种用于编写机器指令的低级语言,它直接操作计算机的硬件。
通过学习汇编语言,我了解了计算机内存、寄存器、指令和数据的存储方式,并学会了如何编写简单的汇编程序。
实验二:汇编语言的数据表示在这个实验中,我学习了汇编语言中的数据表示方法。
汇编语言中的数据可以用不同的方式表示,例如二进制、十进制和十六进制。
我还学习了如何使用数据寄存器和内存寻址来处理不同类型的数据。
实验三:汇编语言的指令集在本实验中,我学习了汇编语言的指令集。
汇编语言中的指令可以分为数据传送指令、算术运算指令、逻辑运算指令和控制指令等多种类型。
通过学习不同类型的指令,我可以编写更加复杂和功能强大的汇编程序。
实验四:汇编语言的程序设计在这个实验中,我学习了如何使用汇编语言进行程序设计。
通过学习汇编语言的程序设计技巧,我可以编写出高效、精确和可靠的程序。
我还学习了如何使用子程序、循环和条件语句等控制结构来实现不同的功能。
实验五:汇编语言的调试和优化在本实验中,我学习了如何调试和优化汇编语言程序。
调试是指在程序运行过程中发现并修复错误的过程,而优化则是指对程序进行性能提升的过程。
通过学习调试和优化技巧,我可以提高程序的效率和可靠性。
结论:通过这些实验,我对汇编语言有了更深入的了解。
汇编语言虽然复杂,但它可以帮助我们更好地理解计算机的内部工作原理,并且可以编写出高效、精确和可靠的程序。
通过学习汇编语言,我不仅提升了自己的编程能力,还对计算机科学有了更全面的认识。
我相信,在今后的学习和工作中,汇编语言将会发挥重要的作用。
汇编实验报告3
实验(三)实验5:汇编语言顺序结构程序设计一、实验目的:1.掌握汇编语言顺序结构程序设计方法。
2.熟悉常用汇编指令的用法。
3.学会debug输入、运行小程序,并检查运行情况的方法。
4.学会在PC机上建立、汇编、连接、调试和运行80x86汇编语言程序的过程。
二、实验内容:○调试程序2:下面程序完成将HEX为起始地址的两位十六进制转换成八位二进制数存入BIN单元,请阅读程序,找出其中的错误之处,并上机调试运行该程序.○调试程序3:下面程序完成将HEX为起始地址的两位十六进制(ASCII码)转换成八位二进制书存入BIN单元,请阅读程序,找出其中的错误之处,并上机调试运行该程序。
○编写程序1:实现W=(3X+6Y)*4-8Z,设X=5,Y=3,Z=19.实验前编写好程序。
三、实验代码:调试程序2:DATA SEGMENTX DB 20HY DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE,DS: DATASTART: MOV AX, DATAMOV DS, AXMOV AL, X ;X存在AL里XOR AH, AH ;AH清零SHL AX, 1 ;左移一位存AXMOV BX, AXMOV CL, 2 ;将2存在CLSHL AX, CL ;AX的值左移2位存AXADD AX, BX ;AX与BX相加存AXMOV Y, AX ;AX的值赋予YMOV AH, 4CHINT 21HCODE ENDSEND START该程序实现的功能是:实验将X=20H左移一位和左移2位的值相加赋予Y。
运行结果为:调试程序3:实验代码(修改后的代码):DATA SEGMENTORG 1000HBIN DB ? ; 存放转换后的二进制数 HEX DB '6B' ;待转换的十六进制数6BHORG 1030HDB 00H,01H,03H,04H,05H,06H,07H,08H,09H ;0~9对应的二进制数转换表ORG 1040HDB 0AH,0BH,0CH,0DH,0EH,0FH ;A~F对应的二进制数转换表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,HEX ;十六进制高位 36H-AL MOV BX,OFFSET BIN ;BIN的偏移地址1000H-BHSUB AH,AH ;AH清0ADD BX,AX ;1036H-BX形成转换表地址MOV DL,[BX] ;DL=(1036H)=06H ;SHL DL,4 ;将DL左移至高4位,DL=60HMOV AL,HEX+1 ;十六进制低位 42H-AL MOV BX,OFFSET BIN ;BIN的偏移地址1000H-BXXOR AH,AH ;AH清0ADD BX,AX ;1042H-BX形成转换表地址MOV AL,BX ;AL=(1024H)=0BH OR AL,DL ;AL=0BH||60H=6BHMOV BIN,AL ;6BH-BIN单元MOV AH,4CHINT 21HCODE ENDSEND START运行结果:调试程序一:DATA SEGMENTDAT DB 0A5H, 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV AL, DAT ;取被操作数MOV BL, AL ;备份操作数MOV CL, 4 ;设置准备移动的位数SHL BL, CL ;取操作数的高4位MOV DAT+1, BL ;将高BCD数存入DAT+1AND AL, 0FH ;取操作数的低4 位MOV DAT+2, AL ;将低BCD数存入DAT+2MOV AH, 4CHINT 21HCODE ENDSEND START运行结果:编写程序1:实现W=(3X+6Y)*4-8Z的程序:DATA SEGMENTX DB 5Y DB 3Z DB 19W DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR AX,AX ;AX清0MOV AL,3MOV BL,XMUL BL ;3与X相乘存入ALMOV BX,AX ;AX存入BXMOV AL,6MOV CL,YMUL CL ;6与Y相乘存入CLMOV CX,AXADD BX,CX ;BX与CX相加存入BXMOV AX,4MUL BX ;BX与4相乘存入AXMOV BX,AXMOV AL,8MOV CL,Z ;8与Z相加存入ALMUL CLSUB DX,0 DX与0相减存入DXMOV WORD PTR W,BXMOV WORD PTR W+1,DXMOV AH,4CHINT 21HCODE ENDSEND START运行结果:四、实验小结:1.注意输入输出的文件转换和使用方法。
汇编语言实验报告
汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。
若相同’,否则显示‘No match’。
则显示‘Match在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1’和‘Nomatch’。
再代码段比较字符串string1和string2,和mess2,分别代表‘Match通过比较判断是否相同。
若相同则显示‘Match’,否则显示‘No match’。
二、调试说明再EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,再用连接程序产生执行文件EXE。
再用Debug进行调试。
其中常用到的指令有:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存用器和修改寄存器的值,-q命令用来退出debug程序。
在这些命令的后面加上地址,可以将命令执行到相应的地方。
如用-g指令运行程序后,再用-u指令显示程序的执行借给如下:若将string2改为'Move the cursor backwards.',程序的其他部分不做改动,执行结果:若将mov cx,25语句改成mov cx,24,结果为:此时少做了一次循环,得到的结果就不正确了。
实验二、用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、程序说明本实验包括两个部分,第一个部分是将AX和BX的内容进行交换,并用堆栈作为两寄存器交换内容的中间存储单元;第二部分是用DEBUG的命令将存储器偏移地AH, 0BH,0CH,0DH,0EH。
在DEBUG状态址300H,304H连续单元顺序装入0 下送入给出的程序中。
第一个程序先将AX的内容进栈,然后将BX的内容赋给AX,再将出栈的内容赋给BX即可。
第二个程序是在进入debug后,用-a指令输入给出的程序,然用-r指令安要求修改内存的内容,再用-t指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。
汇编实验报告
《汇编程序设计》实验报告班级网络工程3班姓名院系计算机科学学院学号指导教师郭荣佐计算机科学学院目录实验一Debug命令的使用一,实验目的及要求1,汇编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。
2,利用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。
二,实验内容1,Debug程序的调入和退出2,Debug常用调试命令的使用3,MOV.XCHG.XLAT指令的调试三,实验步骤(一)、DOS常用命令练习:1.查看目录下所有的文件:2.键入 CD进入上级目录,再查看的结果:3.用COPY复制一个文件:4.用RENAME重命名一个文件:4.用DEL删除一个文件:(二)、DEBUG练习1,输入代码2,分步执行代码3,显示内存4,修改0100处的指令5,修改2000单元的值四,扩展题1,MOV指令的调试2,XCHG指令的调试3,XLAT指令的调试五、18条指令1。
.2.比较命令3.显示命令D:4.修改命令E:5‘填充内存指令F:6执行命令G:7.十六进制算求算运算指令H:8.断口输入命令I:9.读盘命令L:10.内存搬家命令M:11.命名待读/写文件命令N:12.段口输出命令O:13.结束debug返回DOS命令Q14.显示修改寄存器命令R15.搜索指定寄存器内容命令S16.执行并显示系统环境命令T 17.反汇编命令U18.写盘命令W实验二、基本汇编指令的使用一、实验目的及要求1.继续熟悉汇编语言调试环境Debug的使用,掌握常用调试命令。
2.用基本指令编写的程序段,并在Debug环境中调试,从实践中加深对基本汇编语言指令的执行过程的理解。
3.实验前要做好充分准备,包括汇编程序段清单、调试步骤、调试方法,以及对程序结果的分析等二、实验内容1单步调试一下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF 的状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.请使用MOV指令将AX寄存器内装入数据1231H,将BX寄存器中装入数据5678H,然后使用PUSH和POP指令将寄存器AX和BX的内容交换,显示交换前的值和交换后的值。
5.假设有两个字节变量BUF1和BUF2,编写程序分别使用mov,push/pop,xchg指令完成交换BUF1和BUF2两单元的内容,并显示交换前的值和交换后的值。
Data segment
BUF1 db 12
BUF2 DB 34
Data ends
思考与练习
1.使用mov指令时,哪些之间不可以传送,不能传送如何去实现?
实验三《通用传送指令》实验报告
实验名称
通用传送指令
实验
时间
2012年月日
节课
实验
时数
2
实验学生
指导教师
实验场地
实验准备
(1)操作系统: Windows 2000 /windowsxp
(2)汇编软件:MASM
实验目的
(1)了解汇编语言调试程序使用的基本过程。
(2)使用debug调试汇编语言源程序
(3)掌握通
(4)将数据1378H存入20102H存储单元,使用寄存器相对寻址方式。
(5)将数据9867H存入20104H存储单元,使用基址变址寻址方式。
(6)将数据7F10H存入20106H存储单元,使用相对基址变址寻址方式。
2.请使用D命令查看段地址为2000:100开始的存储单元内容,命令与结果显示在下方。
实验任务及实验步骤
1.请编写程序使用MOV命令和要求的寻址方式将下列的存储单元或寄存器写入对应的数据。请将使用的命令和执行的结果显示在下方。
(1)将数据ABCDH写入AX寄存器,采用立即寻址方式。
(2)将寄存器AX中的数据送入到BX寄存器中,采用寄存器寻址方式。
(3)将数据789AH存入20100H存储单元,使用寄存器间接寻址方式。