2010汇编语言上机实验三
计算机汇编上机实验报告
实验报告、实验编号:二、实验题目:顺序程序设计三、实验类型:必做四、实验目的:1.了解汇编语言的程序结构。
2.理解汇编语言中由源程序文件到可执行文件的过程。
五、实验内容和步骤:1、实验内容:编程实现:当 X=5 时,求 Y=3X4+5X3+6X2+4X+2.2、实验步骤:(1)首先对al.asm进行汇编连接生成 a1.exe文件。
(2)进行DEBUG程序并装入要调试的程序 a1.exe女口: DEBUG a1.exe ;进入 DEBUG 并装配 a1.exe(3)反汇编,确定每条指令的地址。
-U ;从当前地址进行反汇编—U200 ;从CS: 200处开始反汇编反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令(4)G命令来设置断点。
—G120此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。
(5)观察数据段的内容,即观察内存的内容—D DS: 0000 ;从数据段的0单元开始显示128个字节。
—D DS: 0000 0001;从数据段的0单元、1单元显示2个字节。
(6)退出DEBUG命令—Q六、实验结果:145A:001E 83C002 ADD AX,+02-u145A:0021 A30100 MOV [0001],AX145A:0024 B44C MOV AH,4C145A:0026 CD21 INT 21145A:0028 7509 JNZ 0033145A:002A E83F26 CALL 266C145A:002D 8946E8 MOV [BP-18],AX145A:0030 E80D97 CALL 9740145A:0033 F6065C3601 TEST BYTE PTR [365C],01145A:0038 7405 JZ 003F145A:003D EB05 JMP 0044145A:003F E82A26 CALL 266C-g 145A:0021AX=0A70 BX=0005 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1459 ES=1449 SS=1459 CS=145A IP=0021 NV UP EI PL NZ AC PO NC145A:0021 A30100 MOV [0001],AX DS:0001=0000-tAX=0A70 BX=0005 CX=0038 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1459 ES=1449 SS=1459 CS=145A IP=0024 NV UP EI PL NZ AC PO NC145A:0024 B44C MOV AH,4C-d ds:0001 00021459:0000 70 0A七、实验总结:通过本次试验,我有很多收获。
汇编语言 实验3 串操作 (含答案)
实验一串操作一、实验预习要求1、复习8086指令系统中的串操作指令。
2、复习汇编程序的建立、连接、执行和调试的全过程。
3、根据本实验的编程提示及题目要求编写试验中的程序段。
二、编程提示1、定义逻辑段时,所定义的数据段或附加段的缓冲区大小及缓冲区起始地址应与实际的操作需要一致。
;例如定义如下附加段:<附加段名> SEGMENT ;定义附加段ORG 1000H ;定义缓冲区从该逻辑地址为1000H处开始BUFFER DB 10H DUP(?) ;定义缓冲区大小为10H个字节单元<附加段名> ENDS2、任何程序都需要定于代码段。
在代码段中需要初始化所定义的除代码段寄存器之外其他段寄存器,程序代码的最后需要有正常返回DOS的指令。
如下:<代码段名> SEGMENTASSUME CS :<代码段名> ,DS:<数据段名>,ES:<附加段名>START: MOV AX , <数据段名>MOV DS, AXMOV AX, <附加段名>MOV ES,AX【串操作程序代码】MOV AH,4CHINT 21H<代码段名> ENDS三、实验内容1、在代码段中输入以下程序段并运行之,回答问题。
CLDMOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSW上述程序生成EXE文件,执行后:(1)从ES:1000H开始的16个字单元的内容是什么?(1)DI=?,CX=?解释原因。
DI=1020H CX=0000H REP的功能是重复执行操作至CX=0,而STOSW是每次执行指令都是(DI)←(DI)+2DI=2020 CX=0000 REP的功能是重复执行操作至cx=0,而stosw是每次执行指令都是(DI)<-(DI)+22、在上题的基础上,在代码段中再输入以下程序段并运行,回答下面的问题:MOV SI,1000HMOV DI,2000HMOV CX,20HREP MOVSB程序执行后:(1)从ES:2000H开始的16个字单元的内容是什么?(2)SI=?,DI=?,CX=?分析原因。
汇编语言上机实验内容
实验一上机操作一、实验目的把握汇编语言程序编辑、汇编、连接、运行和利用DEBUG调试程序的方式。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,把握经常使用命令的利用方式,观看运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作进程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDITc:\masm>MASM ABC;假设有语法错,回EDIT下改该程序c:\masm>LINK ABC;假设有错,回EDIT下改程序c:\masm>ABC假设运行结果错,回EDIT下改程序或在DEBUG下调试,找缘故。
c:\masm>DEBUG手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄放器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采纳2号功能挪用,别离输出30 31 30 31 30 30 31 31 显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;挪用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判定是不是终止MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ;编辑源程序c:\masm>MASM ShowBL ;汇编成Microsoft (R) Macro Assembler VersionCopyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成Microsoft (R) Overlay Linker VersionCopyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行01010011 ;屏幕显示c:\masm>-在DEBUG下查看的装入情形:c:\masm>DEBUG- R ;查看当前寄放器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
汇编语言的上机运行
微机原理与接口技术实验报告姓名:周娟学号 10200207 班级:电子信息专业 2010 级 2 班指导教师:张开洪微机原理与接口技术实验报告实验项目名称:汇编语言程序的上机过程实验日期:2012-5-2 实验成绩:实验评定标准:1)实验结果及分析是否合理A()B()C()2)实验程序流程图是否正确A()B()C()3)实验报告是否按照规定格式A()B()C()一、实验目的1)熟悉汇编语言源程序上机的一般过程及方法。
2)掌握宏汇编程序MASM5.1和连接程序LINK3.6的使用方法。
3)了解DEBUG调试汇编语言源程序的过程及方法。
二、实验器材计算机一台三、实验内容查找求2n:在起始地址为array的15个字单元中连续2的整数次幂,作为2的n次方表,通过查找计算2的次幂,并把结果存储到pwr字单元中。
程序如下:.model small.dataArray dw 1,2,4,8,16,32,64,128,256,512Dw 1024,2048,4096,8192,16384X db 11Pwr dw ?.codeMain proc farPush dsSub ax,axPush axMov ax,@dataMov ds,axMov bh,0Mov bl,xShl bx,1Mov ax,array[bx]Mov pwr,axRetMain endpEnd main四、实验程序流程图五、利用文本编辑器完成以上程序的编辑利用宏汇编程序MASM5.1对源程序进行汇编生成目标文件test2.obj利用连接程序LINK3.6对目标程序进行连接生成可执行文件test2.exe运行程序,由于程序中没有显示功能,所以看不到计算结果在DEBUG下运行程序,并查看计算结果六、运行结果1、进入命令提示符,把文件夹所在盘设置为当前盘,输入文件夹名:2、在光标提示处输入MASM xxxx.asm,回车,进行汇编,连接,生成.exe文件:3.由于结果无法直接观察到,则需返回到DEBUG中进行查看,用q命令查看运行进度:用d命令查看结果,用q命令返回DOS命令:。
汇编上机实验报告
汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出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_汇编语言程序上机过程
南昌大学实验报告学生姓名:赖思敏学号:6100410171 专业班级:电3 105实验类型:■验证□综合□设计□创新实验日期:2010.11.3 实验成绩:实验3 汇编语言程序上机过程一.实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。
了解汇编语言程序的汇编、运行环境。
二.实验内容1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3.利用的INT 21H的1号功能实现键盘输入的方法;三.实验要求1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2.了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;3.阅读下面程序段。
四.实验环境PC微机DOS操作系统或Windows 操作系统MASM。
EXE,LINK。
EXE,DEBUG。
COM或宏汇编集成环境五.实验步骤1、按步骤完成下列程序的编译、连接、运行及调试等过程:data segmentmessage db 'This is a sample program of keyboard and disply'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain:mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd:mov dl,almov ah,2int 21hjmp againexit:mov ah,4chint 21hcode endsend start实验步骤:1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
汇编语言_实验三_编程、编译、连接、跟踪
汇编语⾔_实验三_编程、编译、连接、跟踪四、实验结论1. 练习1第⼀步,在记事本中输⼊实验要求中提供的代码,结果如下:将其以⽂件名t1.asm另存为到E:/masm。
第2步,为⽅便后续操作,此处先准备⼀个批处理⽂件:同样将其放⼊E盘masm路径下,重命名为process.bat。
(1)进⼊并配置好DSBox环境,使⽤process t1对t1.asm进⾏编译、连接并运⾏:屏幕上出现36.(2)将修改line 4和line 6中寄存器dl增加的值,发现line 4中写⼊的数值是屏幕上显⽰的第⼀位数字1,line 9中的数值是屏幕上第⼆位数字。
(3)使⽤debug命令对⽣成的t1.exe进⾏调试。
①⾸先,使⽤r命令查看寄存器的值:注意到,此处CX的值是0016H,DS的值为075AH,CS的值为076AH,刚好满⾜CS=DS+10H。
②使⽤d命令查看程序段前缀的前两个字节,发现前两个字节的确是CD 20:3.反汇编t1.exe,查看所得代码,由于CX=0016H,所以此处我们查看从CS开始的0015H个字节的代码:刚好是t1.asm中的内容。
④使⽤t命令和p命令进⾏单步调试直⾄程序结束,观察结果:2. 练习2第⼀步,编写汇编源程序:第⼆步,(1)对源程序进⾏编译、连接、运⾏,运⾏结果如下:看到屏幕出现酒红⾊的36,嗯,这说明我们的程序有好好的编译连接和运⾏了……(等等,说好的err呢?)(2)好吧,我们进继续按照实验要求中将原代码line 7的0433H改为0432H,将line 10中毒的0436H改为0439H,重新进⾏编译、链接、运⾏,得到结果如图:(3)我们继续尝试修改填⼊显存单元中的数值,将源代码中line7的0433h改为0333h, line10 的 0436h改为0336h, 然后重新汇编、连接,并运⾏,结果如下:此时屏幕左上⾓出现了绿⾊的36。
3. 延伸思考与分析(1)在实验⼀中,我们已知地址A0000~BFFFF被⽤来当做显存地址空间,向地址为A0000~BFFFF的内存单元中写⼊数据,就是向显存中写⼊数据,这些数据会被显⽰卡输出到显⽰器上。
汇编语言程序设计上机实验报告(实验三)-循环程序设计
汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
汇编语言上机实验汇总
汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
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)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
汇编上机实验报告
实验一认识Tddebug集成操作软件实验日志指导教师曾素华实验时间:2013 年04 月02 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目认识Tddebug集成操作软件二、实验目的1.熟悉汇编程序的开发过程。
2.认识Tddebug集成操作软件。
3.掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。
4.掌握INT 21H软件中断来调用DOS内部子程序的方法三、实验内容及说明1.实验内容:数据传送实验1)编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参见示例出程序。
2)修改此程序,采用字符串传送指令完成。
2.实验中使用DOS功能调用(INT 21H):参见教材《32位微型计算机原理与接口技术》89页(1)显示字符串入口:AH=09H调用参数:DS:DX=串首地址,‘$’为结束字符。
(2)返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验主要步骤要求一数据传送实验1.运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:3)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
4)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。
《汇编语言》实验三——编程、编译、连接、跟踪
《汇编语⾔》实验三——编程、编译、连接、跟踪实验任务⼀:将下⾯的程序保存为t1.asm⽂件,将其⽣成可执⾏⽂件t1.exe。
⽤记事本编辑代码,保存为t1.asm:编译、连接,⽣成可执⾏⽂件:运⾏程序:得到输出结果为06下⾯研究修改line4和line9中寄存器dl的值,对结果产⽣的影响。
为简化编译、连接的过程,决定采⽤批处理⽂件的形式来完成这个过程:⽣成⼀个名为m_l.bat的批处理⽂件。
修改:line4的3—>4,line9的6—>8:编译、连接、执⾏:得到输出结果08⽤debug对t1.exe调试:⽤r命令查看各寄存器的值:发现cs的值为076A,ds的值为075A,满⾜(cs)=(ds)+10H查看psp的内容:可以看到,psp的头两个字节的确是CD 20使⽤u命令反汇编,观察源代码:单步调试:实验任务⼆:将下⾯的程序保存为t2.asm⽂件,将其⽣成可执⾏⽂件t2.exe⽤记事本编辑代码,保存为t2.asm:编译、连接,⽣成可执⾏⽂件:运⾏结果:在屏幕的左上⽅出现红⾊数值36下⾯研究修改line7和line10的部分数据对结果产⽣的影响①line4的 0433h—>0432h, line10的 0436h—>0439h编译、连接、运⾏:运⾏结果:在屏幕的左上⽅出现红⾊数值29①line4的 0433h—>0333h, line10的 0436h—>0336h编译、连接、运⾏:运⾏结果:在屏幕的左上⽅出现蓝⾊数值36从以上3组结果可以看出,line7控制第⼀个字符的输出,line10控制第⼆个字符的输出。
⼆者[bx]的⾼字节决定了颜⾊,低字节控制显⽰的字符。
东北大学汇编上机实验3
实验三顺序结构程序设计实验一、实验目的1.掌握顺序结构程序的基本设计方法;2.掌握数据传送指令和算术运算指令的用法;3.掌握逻辑操作指令和移位操作指令的用法;4.掌握状态标志位操作指令的用法;5.掌握简单的I/O功能调用。
二、实验要求1.熟练掌握DEBUG中的各命令的使用方法;2.学会利用系统功能调用,来实现键盘输入字符、显示字符的方法;3.学会十进制数字与其对应的ASCII码相互转换的方法;4.学会十六进制数字与其对应的ASCII码相互转换的方法;5.学会利用查表的方法实现代码的转换。
三、实验内容1.编写十六进制数的乘法程序。
要求从键盘上输入两个一位十六进制数据,乘积存入SUM单元。
2.编写程序,求表达式5X+Y的值,要求:X、Y值从键盘输入,X、Y均为一位十六进制数据,将计算结果存入SUM单元。
四、解题思路利用INT 21H的1号功能可以从键盘上输入数据, 通过通用寄存器保存中间结果,完成各项计算功能。
将结果的ASCII码保存在内存单元和DL寄存器中,然后利用INT 21H的2号功能将其输出到屏幕上。
输出到屏幕上一次只能显示4位二进制数,所以一个字节需要分两次才能显示出来。
五、编程实现5.1 内容1DSEG SEGMENTHTAB DB '0123456789ABCDEF'SUM DW 0,0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEG ;初始化DS寄存器MOV DS,AXMOV AH,01H ;从键盘上输入一个数X(默认放入AL)INT 21HSUB AL,30H ;输入的数据ASIIC码翻译成十六进制MOV BL,AL ;X放入到BL中MOV DL,'*' ;规定要显示的符号必须在DL中MOV AH,02H ;显示’*’INT 21HMOV AH,01H ;从键盘输入第二个数Y(默认放入AL)INT 21HSUB AL,30H ;输入的数据ASIIC码翻译成十六进制MUL BL ;AL*BLMOV SUM,AX ;保存数据到SUM中MOV CH,AL ;利用CH和DH存放MOV DH,ALMOV DL,'=' ;规定要显示的符号必须在DL中MOV AH,02H ;显示‘=’INT 21HMOV CL,4SHR DH,CL ;DH中保存了之前AL中的高四位MOV AL,DH ;查表规定数据必须在AL中LEA BX,HTAB ;利用查表方法显示XLATMOV DL,AL ;显示AL中的高四位MOV AH,02HINT 21HAND CH,0FH ;CH中保存了之前AL中的低四位MOV AL,CH ;查表规定数据必须在AL中XLAT ;查表方法显示MOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START运行结果如下如图3-1图3-15.2 内容2DSEG SEGMENTHTAB DB '0123456789ABCDEF'SUM DW 0,0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AH,01H ;从键盘上输入X,默认保存到AL中INT 21HSUB AL,30HMOV BL,5 ;BL中保存数据5MUL BL ;X*5默认保存到AX中MOV CX,AX ;X*5保存在CX中MOV DL,'*' ;屏幕上显示'*'前规定需要保存到DL中MOV AH,02H ;显示’*’INT 21HMOV AL,05H ;利用查表法输出5,之前必须放入到AL中LEA BX,HTAB ;查表获取地址XLAT ;查表转换MOV DL,AL ;屏幕显示数据5之前规定需要放到DL中MOV AH,02H ;显示5INT 21HMOV DL,'+' ;屏幕显示’+’之前规定需要放到DL中MOV AH,02H ;屏幕显示’+’INT 21HMOV AH,01H ;从键盘上输入数据YINT 21HSUB AL,30HMOV BL,AL ;Y保存到BL寄存器中MOV BH,00HADC CX,BX ;实现5X+YMOV SUM,CX ;保存结果MOV DL,'=' ;屏幕显示‘=’之前规定需放入到DL寄存器中MOV AH,02H ;显示’=’INT 21HMOV BH,CL ;保存CL,因为下面指令SHR需用到CL寄存器MOV CH,CL ;保存CL,因为下面指令SHR需用到CL寄存器MOV CL,4SHR BH,CL ;右移4位,即为原来结果的高4位MOV AL,BH ;放到AL中,便于查表转换后显示出来LEA BX,HTAB ;查表XLATMOV DL,AL ;显示结果的高4位MOV AH,02HINT 21HAND CH,0FH ;原来结果低4位处理MOV AL,CH ;查表转换XLATMOV DL,AL ;显示结果低4位MOV AH,02HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START运行结果如图3-2图3-2六、实验总结6.1 心得体会6.2 遇到的问题实验过程中遇到的问题很多,我就挑典型的几个错误分享一下。
汇编语言程序设计上机实验指导
汇编语言程序设计上机实验指导一、实验目的1.掌握汇编语言的基本原理和编程技巧。
2.加深对计算机系统结构的理解。
3.培养实验操作和编程能力。
二、实验环境1.所需软件:MARS仿真器。
2.操作系统:任意支持MARS仿真器的操作系统。
三、实验内容1.实验一:编写一个简单的汇编语言程序,实现加法运算。
(1)要求用户输入两个整数。
(2)将两个数相加。
(3)输出两个数的和。
2.实验二:编写一个汇编语言程序,实现乘法运算。
(1)要求用户输入两个整数。
(2)将两个数相乘。
(3)输出两个数的乘积。
3.实验三:编写一个汇编语言程序,实现判断一些数是否为质数。
(1)要求用户输入一个整数。
(2)判断该整数是否为质数。
(3)输出判断结果。
4.实验四:编写一个汇编语言程序,实现打印从1到N之间的所有质数。
(1)要求用户输入一个整数N。
(2)打印出从1到N之间的所有质数。
四、实验步骤1.打开MARS仿真器,创建一个新的程序。
2.按照实验要求,编写汇编语言程序代码。
3.在MARS仿真器中调试和运行程序。
4.检查程序输出结果是否与预期相符。
5.优化程序代码,提高程序的效率和性能。
五、实验注意事项1.确保编写的代码逻辑正确、语法规范。
2.程序设计要遵循模块化设计原则,尽量将程序划分为多个模块,提高程序代码的可读性和维护性。
3. 实验过程中要注意调试程序,排除可能出现的bug。
4.在程序编写过程中,保持良好的编程习惯,合理命名变量和子程序,提高代码的可读性。
六、实验总结1.实验报告中需包含实验的目的、内容、步骤、注意事项等内容。
2.分析并总结实验中遇到的问题和解决方法。
3.对实验过程、结果的合理性进行分析和讨论。
4.提出对实验中存在问题的改进建议。
以上就是一份汇编语言程序设计上机实验指导的内容。
希望这份指导能够帮助学生们更好地进行汇编语言程序设计的实验,提高他们的实践能力和编程水平。
汇编上机实验报告
汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。
2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。
(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。
3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。
(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。
3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。
(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。
4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。
微机原理与汇编语言实验03_循环程序设计实验
微机原理与汇编语言实验实验三循环程序设计实验一实验目的1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二实验预习要求1、复习比较指令、条件转移指令和循环指令。
2、复习循环程序的结构、循环控制方法等知识。
3、读懂“三实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。
4、根据“三实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
5、从“四实验习题”中任选一道题目,编写源程序,以便上机调试。
三实验内容计算1+2+……n=?,其中n通过键盘输入。
要求在屏幕上提供如下信息:Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。
1、编程指导(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。
将键盘输入的十进制数转换为二进制数的程序清单如下:.model small.stack.dataINF1 DB "Please input a number (0-65535):$"IBUF DB 6,0,6 DUP(?).codeSTART: MOV AX, @dataMOV DS, AXMOV DX, OFFSET INF1MOV AH, 09HINT 21HMOV DX, OFFSET IBUF ;键入一个十进制数(<65535)MOV AH, 0AHINT 21HMOV CL, IBUF+1 ;十进制数的位数送CXMOV CH, 0MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)MOV AX, 0 ;开始将十进制数转换为二进制数AGAIN: M OV DX, 10 ;((0⨯10+a4) ⨯10+…) ⨯10+a0MUL DXAND BYTE PTR [SI], 0FHADD AL, [SI]A DC AH, 0I NC SILOOP AGAINMOV AH, 4CHINT 21HEND START本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。
汇编语言上机实验报告3
学号080304235沈阳建筑大学城市建设学院汇编语言程序设计上机实验报告2010~2011第2 学期专业班级:计算机08-2班姓名:董宇亮上机时间:指导教师:杜利明年月日1.实验目的掌握汇编程序的循环结构程序设计方法。
2.实验要求1.掌握多重循环程序和排序程序设计方法。
2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE3.实验指令内容建立学生名次表,以grade为首地址的数组中保存了学生的成绩,其中grade+i 保存学号为i+1的学生的成绩。
要求建立一个10个字的rank数组,并根据grade中的学生成绩将学生名次填入rank 数组中,其中rank+i的内容是学号为i+1学生的名次(提示:一个学生的名次等于成绩高于该学生的人数加1)4.实验步骤1.输入,汇编并连接此程序。
2.在DEBUG下运行此程序,记录运行结果。
3.将转移指令JGE改为JG,JL,JLE分别运行记录排序结果,察看结果是否正确不对,并分析原因。
5.程序(指令)清单DA TAS SEGMENT;此处输入数据段代码GRADE DW 79,85,58,45,78,36,98,85,48,72;自行定义;成绩COUNT EQU ($-GRADE)/2RANK DW COUNT DUP (1) ;排名,初始值为1,大家都第一名,同一起跑线哈DA TAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,0 ;要排名的学生号码MOV CX,COUNTL1:MOV AX,GRADE[SI] ;获得第SI号学生的成绩MOV BX,RANK[SI] ;获得第SI号学生的初始排名MOV DX,CX ;保存CXMOV DI,0 ;要比较的学生的号码MOV CX,COUNTL2:CMP AX,GRADE[DI] ;逐个比较JNB L3INC BX ;低于某一个学生的成绩,则排名加1 L3:ADD DI,2LOOP L2MOV RANK[SI],BX ;保存排名ADD SI,2MOV CX,DXLOOP L1MOV AH,4CHINT 21HCODES ENDSEND START6. 程序运行结果7.实验心得。
汇编语言上机实验报告
汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。
本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。
实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。
实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。
实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。
通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。
该程序的功能是在屏幕上输出"Hello World"。
```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。
2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。
我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。
```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。
汇编语言上机实验
实验一 DOS常用命令及8088指令使用 二、实验内容
DEBUG 命令使用 :
1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存 单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。在操作时要注意提示信息,并按提示操
实验二 内存操作数及寻址方法
二、实验内容和步骤
求累加和程序: 程序: MOV BX,1000 MOV CX,10 SUB AX,AX LOP: ADD AL,[BX] AD CAH,0 INC BX J: LOOP LOP INT 3 步骤: 1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址 值代替。 2)用命令N AA将此程序命名为文件AA(文件名可任取)。 3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开 始地址) 4)用命令W 100将此程序存到AA命名的磁盘文件中。 5)用命令Q退出DEBUG。 6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。 若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 7)用E命令在内存地址1000H处键入16个数字 8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查 AX,BX的值是否符合你的预计值。 9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。 10)重复G J与T,再检查AX是否正确。 11)用G命令使程序运行到结束,检查AX值是否正确。
实验三 汇编语言程序上机操作方法
一 T AX=0233 BX=0000 CX=0011 DX=0038 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B65 ES=0B65 SS=0B75 CS=0B75 IP=000B NV UP EI PL NZ NA PO NC_ 0B75:000B CD21_ INT_____21_ ・ 在_DEBUG_状态下执行程序 一 G 8 Program terminated normally ・ 退出 DEBUG 一 Q_ 2. 比较字符串_bjchx_ 编写一程序,比较两个字符串_string1_和 _string2_所含的字符是否相同,若相同则显示‘Match’ ,否则,显 示‘No_Match’ 。 参考程序如下:(程序名:SY3-2.ASM) D_SEG SEGMENT STRING1 DB '12345' STRING2 DB '1a345' MATCHSTR DB 'MATCH$' NOMATCHSTR DB 'NO MATCH$'
实验注意事项 1.如果使用的是 MASM5.1 的汇编工具,应包括以下文件:MASM 宏汇 编程序文件 LINK 连接程序文件CREF 索引程序文件(也可不用) EDIT 全屏幕文本编辑程序(或其他文字处理系统) 2.能用宏汇编通过的汇编语言源程序与在 DEBUG状态下运行的汇编 语言程序不同,必须是一个完整的程序,有各逻辑段的定义,而在 DEBUG 状态下运行的汇编语言源程序只是其程序段。 3.连接程序 LINK 是把一个或多个独立的目标程序模块装配成一个 可重定位的可执行文件,扩展名为.EXE。 实验与思考 1. 机器语言(Machine Language)、汇编语言(Assembler Language) 和高级语言(High_Level_ Language)的区别? 2.DOS 2 号功能调用和 DOS 9号功能调用的区别? 3.利用 DEBUG 调试程序过程中,应注意什么?
2010汇编语言上机实验三
三.实验步骤 实验步骤 1.编写源程序文件; 2.汇编,若发现语法错误或者格式错误则修改; 3.链接,形成可执行文件; 4.运行程序,得到正确结果; 5.撰写实验报告:
1)实验目的; 2)实验要求; 3)实验步骤; 4)实验中涉及知识介绍; 5)画出流程图; 6)写出源程序清单,并附注释; 7)写出调试过程及运行结果并分析; 8)总结实验中遇到的问题及解决方法;
编程提示( 编程提示(续) 9. ADC 带进位加法. INC 加 1. SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求补 CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算).
实验题一参考流程图
编程提示
1.预留存储器空间RES1、RES2和RES3。 RES1 DB 0 RES2 DB 0 RES3 DB 0 2.按照顺序正确取出要判定的数据 LEA BX,BUF LL:MOV AL,[BX] INC BX 判定语句及其相应的跳转语句 JMP LL 3.正确存放数据到指定的空间 MOV DL,0;存放数据个数,初值为0 INC DL MOV RES1,DL 4.注意正确使用寄存器。由于只有三个分类,因此建议直接使用不用的寄存 器(只需要8位的寄存器)进行数据个数记录。
编程提示( 编程提示(续) 5.从键盘输入字符中断 Mov ah,1 Int 21h;结果是 al←输入字符的ASCII码 6.显示一个字符中断 Mov ah,2 Mov dl,要显示字符的ASCII码 Int 21h; 7.小写字母a对应的ASCII码是61h,以此类推其他小写字母; 大写字母A对应的ASCII码是41h,以此类推其他大写字母; 8.显示字符串中断(用于显示出错提示) 先定义一个字符串 Mov ds,字符串所在段 Mov dx,字符串所在段内偏移地址 Mov ah,9 Int 21h
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家级计算机实验示范中心
实验三分支程序与循环程序设计
一、实验目的 1.掌握分支程序的结构。 2.掌握分支程序的设计与调试方法。 3.掌握循环程序设计与调试方法 4.掌握正确分配与使用寄存器。 二、实验内容(任选一题) 实验内容(任选一题) 1. 分别统计下列20个数中大于5、小于零和大于零且小于等于5的数 据个数,分别存入字节单元RES1、RES2和RES3中。 BUF DB -1, 20, 3, 30, -5, 15, 100, -54, 0, 4, 78, 99, -12, 32, 3, 23, -7, 24, 60,-51 2.根据输入的字母进行大小写转换(若是输入小写字母则转换成为大 写字母,反之),若输入的不是字母则提示出错并重新输入。 3.从键盘上输入三个一位十进制数,将其中大于均值的数显示出来。 4.显示九九表(任意形式均可)
编程提示( 编程提示(续)
10.测试带符号数运算结果的条件转移指令 JG/JNLE 大于转移. JGE/JNL 大于或等于转移. JL/JNGE 小于转移. JLE/JNG 小于或等于转移. 11.测试无符号数运算结果的条件转移指令 JA/JNBE 不小于或不等于时转移. JAE/JNB 大于或等于转移. JB/JNAE 小于转移. . JBE/JNA 小于或等于转移. 12.循环控制指令 LOOP CX不为零时循环. LOOPE/LOOPZ CX不为零且标志Z=1时循环. LOOPNE/LOOPNZ CX不为零且标志Z=0时循环
三.实验步骤 实验步骤 1.编写源程序文件; 2.汇编,若发现语法错误或者格式错误则修改; 3.链接,形成可执行文件; 4.运行程序,得到正确结果; 5.撰写实验报告:
1)实验目的; 2)实验要求; 3)实验步骤; 4)实验中涉及知识介绍; 5)画出流程图; 6)写出源程序清单,并附注释; 7)写出调试过程及运行结果并分析; 8)总结实验中遇到的问题及解决方法;
实验题一参考流程图
编程提示( 编程提示(续) 5.从键盘输入字符中断 Mov ah,1 Int 21h;结果是 al←输入字符的ASCII码 6.显示一个字符中断 Mov ah,2 Mov dl,要显示字符的ASCII码 Int 21h; 7.小写字母a对应的ASCII码是61h,以此类推其他小写字母; 大写字母A对应的ASCII码是41h,以此类推其他大写字母; 8.显示字符串中断(用于显示出错提示) 先定义一个字符串 Mov ds,字符串所在段 Mov dx,字符串所在段内偏移地址 Mov ah,9 Int 21h
编程提示
1.预留存储器空间RES1、RES2和RES3。 RES1 DB 0 RES2 DB 0 RES3 DB 0 2.按照顺序正确取出要判定的数据 LEA BX,BUF LL:MOV AL,[BX] INC BX 判定语句及其相应的跳转语句 JMP LL 3.正确存放数据到指定的空间 MOV DL,0;存放数据个数,初值为0 INC DL MOV RES1,DL 4.注意正确使用寄存器。由于只有三个分类,因此建议直接使用不用的寄存 器(只需要8位的寄存器)进行数据个数记录。
编程提示( 编程提示(续) 9. ADC 带进位加法. INC 加 1. SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求补 CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算).