汇编实验报告
汇编语言实验报告
实验一汇编程序的汇编及运行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.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)编写源程序。
汇编语言实验报告_图文.
设置十个学生成绩否是否小于 60 是 bh 加 1,di 减 1 count 减 1 count 是否为0 否是是否小于 70 bl 加 1,di 减 1 count 减 1 是退出程序否是否小于 80 是 ch 加1,di 减 1 count 减 1 否是否小于 90 是 cl 加 1,di 减 1 count 减 1 否是否小于 100 是 dh 加 1,di 减 1 count 减 1 否 al 加 1,di 减 1 count 减 1 四、源程序清单和执行结果 76,69,84,90,73,88,99,63,100,80 data segment grade dba db '<60renshu:','$' b db 0ah,0dh,'60~70renshu:','$'c db 0ah,0dh,'70~80renshu:','$'d db 0ah,0dh,'80~90renshu:','$'e db 0ah,0dh,'90~100renshu:','$'f db0ah,0dh,'100renshu:','$' count db 10 data ends stacks segment stacks ends code segment assume cs:code,ds:data,ss:stacks main proc far start: mov ax,data mov ds,ax xor ax,ax xor bx,bx xor cx,cx xor dh,dh call countgrade ;调用子程序统计成绩 call output ;调用子程序显示结果 mov ah,4ch int 21h main endp countgrade proc near mov di,0 l0: cmp grade[di],60 jb l1 cmp grade[di],70 jb l2 cmp grade[di],80 jb l3 cmp grade[di],90 jb l4 cmp grade[di],100 jb l5 inc al jmp continue l1: inc bh jmp continue l2:inc jmp l3: inc jmp l4: inc jmp l5: bl continue ch continue cl continue inc dh jmp continue continue: inc di dec count jnz l0 ret countgrade endp output proc near mov ah,0 push ax push dx push cx push bx lea dx,a ;输出小于 60 分的人数 mov ah,9 int 21H pop bx mov dl,bh add dl,30h mov ah,2 int 21H lea dx,b ;输出 60 至 69 分的人数 mov ah,9 int 21H mov dl,bl add dl,30h mov ah,2 int 21H lea dx,c ;输出 70 至 79 分的人数 mov ah,9 int 21H pop bx mov dl,bhadd dl,30h mov ah,2 int 21H lea dx,d ;输出 80 至 89 分的人数 mov ah,9 int 21H mov dl,bl add dl,30h mov ah,2 int 21H lea dx,e ;输出 90 至 99 分的人数 mov ah,9 int 21H pop bx mov dl,bh add dl,30h mov ah,2 int 21H lea dx,f ;输出 100 分的人数 mov ah,9 int 21H pop bx mov dl,bl add dl,30h mov ah,2 int 21H ret output endp code ends end start 执行结果:五、实验总结刚开始觉得汇编语言很麻烦很难,因为有很多条指令,也不知道怎么样才能记住,但经过几次实验,发现那些指令也不是很难,只要知道每条指令的用途就不会很难了。
汇编语言实验报告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开始:。
《汇编语言》实验报告
《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编语言实验十实验报告
汇编语言实验十实验报告一、实验目的本次实验的主要目的是通过学习汇编语言中的输入输出指令和字符串操作指令,掌握如何在汇编语言中进行简单的输入输出和字符串操作。
二、实验内容本次实验主要包括以下内容:1. 输入输出指令:学习如何使用INT 21h中断来进行简单的键盘输入和屏幕输出操作。
2. 字符串操作指令:学习如何使用MOV、LEA、LDS等指令来进行字符串的存储、传递和比较等操作。
3. 实现一个简单程序:通过上述知识点,完成一个简单的程序,可以进行键盘输入和屏幕输出,并对两个字符串进行比较。
三、实验过程1. 输入输出指令在汇编语言中,我们可以使用INT 21h中断来进行键盘输入和屏幕输出操作。
其中,AH寄存器用于指定不同的功能号码。
例如:- AH=01h:在屏幕上显示一个字符- AH=02h:在屏幕上显示一个ASCII码值所代表的字符- AH=06h:从键盘读取一个字符下面是一个示例程序,可以让用户从键盘上输入一个字符,并将其显示在屏幕上:```mov ah, 06h ; 将06h存入AH寄存器int 21h ; 调用中断21hmov dl, al ; 将读取的字符存入dl寄存器mov ah, 02h ; 将02h存入AH寄存器int 21h ; 调用中断21h,显示字符```2. 字符串操作指令在汇编语言中,我们可以使用MOV、LEA、LDS等指令来进行字符串的存储、传递和比较等操作。
例如:- MOV:可以将一个字符串从一个内存地址复制到另一个内存地址- LEA:可以将一个字符串的地址加载到寄存器中- LDS:可以将一个段地址和偏移地址加载到DS和SI寄存器中下面是一个示例程序,可以将一个字符串从一个内存地址复制到另一个内存地址,并比较两个字符串是否相等:```mov si, offset str1 ; 将str1的偏移地址加载到SI寄存器中lea di, str2 ; 将str2的地址加载到DI寄存器中mov cx, length ; 将字符串长度加载到CX寄存器中copy_loop:lodsb ; 从SI指向的内存单元读取一字节数据,并自动将SI加1 stosb ; 将AL所包含的数据写入DI指向的内存单元,并自动将DI 加1loop copy_loop ; 循环执行,直至CX为0cmp str1, str2 ; 比较str1和str2是否相等je equal ; 如果相等,跳转到equal标签not_equal:; 如果不相等,执行一些操作jmp endequal:; 如果相等,执行一些操作end:```三、实验结果通过本次实验,我学会了如何在汇编语言中进行简单的输入输出和字符串操作。
汇编语言实验报告一.doc
汇编语言实验报告(实验一)一.实验目的1.掌握汇编语言程序的上机步骤;(1)用编辑程序(如EDIT、记事本等)编辑汇编语言源程序(建立.ASM文件)。
(2)用MASM程序产生OBJ文件。
(3)用LIINK程序产生EXE文件。
(4)程序的运行(用DEBUG或在DOS下直接运行)。
2.掌握DEBUG的使用方法。
二.程序说明1.在数据段DATA中有两个数据X和Y,假设X=1122H,Y=3344H,编程求两个字的和,结果存放到Z单元中。
2.从SOURCE_BUFFER单元开始存放了20个字母A,编程将这个20个字母A 的字符串传送到DEST_BUFFER开始的单元中。
3.从SOURCE_BUFFER单元开始存放了20个字母A,编程将这个20个字母A 的字符串向下移10个单元。
三.设计思想1、将1122H和3344H分别存放在双字x,y中,定义双字Z,x,y带进位相加放入Z中。
2、定义数据段source_buffer,把数据段地址放入ds寄存器,定义附加段extra_buffer,把附加段地址放入es寄存器,移动整个字符串。
3、定义数据段附加段,先移高位,这样要移20次。
四.程序代码1、DATA SEGMENTX DW 1122HY DW 3344HZ DW ?DATA ENDS ;数据段定义结束STACK SEGMENT ;堆栈段定义开始DW 40 DUP(0)STACK ENDS ;堆栈段定义结束CODE SEGMENT ;代码段定义结束ASSUME CS:CODE,SS:STACK,DS:DATASTART: MOV AX,DATAMOV DS,AX ;设置数据段的开始地址MOV DX,XADC DX,YMOV Z,DXMOV AH,4CH ;返回DOCINT 21HCODE ENDSEND START2、DATA SEGMENT ;定义数据段SOURCE_BUFFER DB 20 DUP(‘a’) ;定义个小写a DATA ENDSEXTRA SEGMENT ;定义附加段DEST_BUFFER DB 20 DUP(?)EXTRA ENDSCODE SEGMENT ;定义代码段MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:EXTRASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AX,EXTRAMOV ES,AXLEA SI,SOURCE_BUFFERLEA DI,DEST_BUFFERCLDMOV CX,20REP MOVSB ;移动整个串RET ;返回到DOSMAIN ENDPCODE ENDSEND START3、DATA SEGMENT ;定义数据段SOURCE_BUFFER DB 20 DUP(‘a’) ;定义个小写a DATA ENDSEXTRA SEGMENT ;定义附加段DEST_BUFFER DB 20 DUP(?)EXTRA ENDSCODE SEGMENT ;定义代码段MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:EXTRASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS, AXMOV AX, EXTRAMOV ES, AXLEA SI, SOURCE_BUFFERLEA DI,DEST_BUFFERCLDMOV CX,20REP MOVSB ;移动整个串RET ;返回到DOSMAIN ENDPCODE ENDSEND START五.结果分析并回答:1.设计的程序包含了几个段第1段包含数据段、堆栈段、代码段第2、3个包含数据、附加段、代码段2.你的代码经过编译和连接之后,总共占用多少个字节第1、2个占30个字节,第3个占32个字节3.调用DEBUG进行反汇编,查看程序的第一条指令的地址码是多少?最后一条指令的地址码是多少?程序1第一条指令:1454:000 BB4B14 MOV AX,144B最后一条指令:1451:001E 807F0400 CMP BYTE PTR [BX+04],00程序2第一条指令:1450:0000 1E PUSH DS最后一条指令:1450:001E 8B0? MOV AX,[BX]程序3第一条指令:144D:0000 1E PUSH DS最后一条指令:144D:0020 8B5702 MOV DX,[DX+02]。
汇编语言实验报告_6
青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。
然后在显示器输出排好序的数据, 中间用’,’隔开。
2.输出数据使用子程序方式。
算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。
(5)循环进入子程序, 输出原始数据。
(6)在子程序内循环输出每一位的十进制数字。
(7)主程序进行内外循环, 进行冒泡排序。
(8)再一次调用子程序输出排序后的结果。
调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。
所以前面必须加上MOV DX,OFFSET NOTE1。
(4)汇编语言是不会再输出汉字的。
(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。
调试结果:。
汇编语言实验报告
汇编语言实验报告实验一汇编语言的源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置2.学习在DEBUG状态下输入汇编源程序的方法3.初步掌握调试(在DEBUG状态下)的过程二、实验原理1.本实验在DEBUG状态下输入汇编源程序,并且用DEBUG命令进行调试,用单步跟踪的方法试验指令的功能;2.以下是给定的参考程序,并在实验时每条指令的“;”等号右边按要求填写指令的分析结果。
三、实验步骤1.开机后进入DOS系统2.用DEBUG的REGISTER命令检查所有寄存器内容,并作记录R[寄存器名]3.用DEBUG的ASSEMBLE命令输入汇编源程序A[内存地址]4.用DEBUG的UNASSEMBLE命令反汇编U[起始地址][终止地址]5.用DEBUG的TRACE命令单步跟踪程序T[起始地址][终止地址]6.用DEBUG的DUMP命令显示存贮器单元的内容四、参考程序及结果MOV AX,2000 ;AL=00MOV DS,AX ;DS=2000NOT AX ;AX=DFFFXOR AX,AX ;AX=0000DEC AX ;AX=FFFFINC AX ;AX=0000MOV BX,2030 ;BH=20MOV SI,BX ;SI=2030MOV [SI],BL ;[2030H]=30MOV WORD PTR[SI],10F ;[2030H]=0F [2030H]=01 MOV DI,SI ;DI=2030MOV [DI+50],BH ;[DI+50]=20MOV BH,[SI] ;BH=0FMOV BL,[DI+50] ;BL=20MOV SP,5000PUSH AX ;AX=0 [SS:4FFEH]=00H [SS:4FFFH]=00H PUSH BX ;BX=0F20 [SS:4FFCH]=20H [SS:4FFDH]=0FH POP AX ;AX=0F20POPF ;F=00000000NEG BX ;BX=F0E0XCHG BX,AX ;BX=0F20STD ;F=01010001STI ;F=01110001CLD ;F=00110001CLI ;F=00010001ADC DI,2050 ;DI=4081 F=00000010ADC SP,DI ;SP=9081 F=10010010ADC AX,1500 ;AX=05E0 F=00000001SUB AX,BX ;AX=F6C0 BX=0F20SHL AH,1 ;AH=ECRCL AX,1 ;AX=D981SHR BX,1 ;BH=07RCR BL,1 ;BL=90MOV CL,4MOV DX,80F0ROL DX,CL ;DX=0F08 CL=04INT 20 ;CS=00A7 IP=1072实验二数据的建立与传送程序一、实验目的1.学习DEBUG命令2.验证指令的功能二、实验原理在DEBUG状态下,输入程序,用G命令进行连续方式执行程序,用DUMP命令查看建立的数据块内容三、参考程序及结果1.在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入MOV AX ,100HMOV DS ,AXMOV SI,0MOV CL ,0FHXOR AX,AXPPE1: MOV [SI] ;ALINC SI ;INC ALDEC CLJNZ PPE1MOV CX,10HPPE2:MOV[SI],ALINC SIDEC ALLOOP PPE2INT 20H数据块的内容1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 002.把上一程序的执行结果分几种方式传送到以下指定区域(a)该程序从内存CS:0150H开始输入,把数据块传送到15050H 开始的存储区域中MOV AX,1000HMOV DS,AXMOV SI,0MOV DI,5050HMOV CX,1FHPPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20H结果:1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(b)用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入MOV AX,100HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150HMOV CS,1FHCLDPPEB: MOVSBLOOP PPEBINT 20H结果:1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(C)用重复串操作指令”REP MOVSB”把数据传送到15250H开始的区域,该程序从CS:250H地址开始输入MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250HMOV CX,1FHCLDREPZMOVSBINT 20H结果:1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(c)用串操作的减量工作方式,把数据传送到25050H开始的区域,该程序从CS:0300H开始输入MOV AX,1000HMOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EHMOV DI,506EHMOV CX,1FHSTDREP MOVSBINT 20H结果:2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法二、实验原理设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分。
汇编实验报告(适合初学者)
汇编实验报告(适合初学者)汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握简单汇编语言程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验内容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.若X、Y、R、W是存放8位带符号数字节单元的地址,Z是16位字单元的地址。
试编写汇编程序,完成Z<-((W-X)/5-Y)某(R+2)①.程序算法流程图。
开始初始化AL=(W-X)AL=(W-X)/5CL=(W-X)/5-YAL=(R+2)Z=((W-X)/5-Y)某(R+2)结束②.源程序清单。
DATASEGMENTXDB1H;数据定义YDB0HRDB3HWDB6HZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,WSUBAL,X;求(W-X)CBW;字节转换为字MOVCL,5IDIVCL;(W-X)/5MOVCL,ALMOVAL,Y;(W-X)/5-YSUBCL,ALMOVAL,RADDAL,2;(R+2)IMULCL;((W-X)/5-Y)某(R+2)MOV[Z],AXADDAL,30H;输出结果MOVDL,AL;MOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
④.调试过程中遇到的问题和解决的方法。
还未能实现动态的输入数据,对指令的不熟悉,以至于在程序中经常性出错,得掌握固定的程序功能。
2.试编写一个程序,测试数是否是奇数。
如该数是奇数,则把DL的第0位置1,否则将该位置0。
①.程序算法流程图。
开始AL=XAL右移一位得CF否CF==1是DL与000000001B相或DL与11111110B相与结束②.源程序清单。
DATASEGMENTXDB9H;数据定义DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,XSHR AL,1;利用右移一位得到cf值,JB判断 JB NEXT;为1则为奇数ANDDL,11111110B;偶数DL第一个数置为0JMPEXITNEXT:ORDL,000000001B;奇数DL第一个数置为1EXIT:MOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。
汇编语言实验报告
实验报告一:汇编语言实验基础一.实验目的:1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法2. 掌握DEBUG常用命令的使用方法二、实验内容:1.DEBUG 命令使用2.8088常用指令练习三、实验步骤:(一)DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符'_ '。
2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。
5、用命令 E 100 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,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
(二)8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序,特别注意左边的机器码。
3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
汇编实验报告
汇编实验报告一、实验目的本次汇编实验的主要目的是深入了解汇编语言的基本语法和编程结构,掌握汇编程序的编写、调试和运行过程,提高对计算机底层硬件的理解和操作能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与运算编写程序实现不同寄存器之间的数据传送。
进行简单的算术运算,如加法、减法、乘法和除法,并将结果存储在指定的寄存器或内存单元中。
2、逻辑运算与移位操作进行逻辑运算,包括与、或、非和异或操作。
实现移位操作,如左移和右移,并观察数据的变化。
3、分支与循环结构使用条件跳转指令实现分支结构,根据不同的条件执行不同的代码段。
运用循环指令实现循环操作,如计数循环和条件循环。
4、子程序调用编写子程序来完成特定的功能,如计算阶乘、查找最大值等。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与运算打开 MASM 编程工具,新建一个汇编源文件。
使用 MOV 指令将数据从一个寄存器传送到另一个寄存器,例如:MOV AX, BX 。
进行加法运算,使用 ADD 指令,如:ADD AX, CX 。
进行减法运算,使用 SUB 指令,如:SUB DX, BX 。
乘法运算使用 MUL 指令,除法运算使用 DIV 指令,并将结果存储在合适的位置。
2、逻辑运算与移位操作在源文件中使用 AND 、OR 、NOT 和 XOR 指令进行逻辑运算,例如:AND AX, BX 。
对于移位操作,使用 SHL (左移)和 SHR (右移)指令,如:SHL AX, 2 表示将 AX 的值左移 2 位。
3、分支与循环结构使用 CMP 指令比较两个值,然后根据比较结果使用 JZ (等于零跳转)、JL (小于跳转)、JG (大于跳转)等条件跳转指令实现分支结构。
对于循环结构,使用 LOOP 指令实现计数循环,例如:MOV CX, 10 ;LABEL: ;LOOP LABEL 。
汇编语言程序设计实验报告
二、实验内容
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文件的编程方法及特点;
汇编实验报告
实验三算术运算与代码转换程序设计一、实验目的1掌握算术运算程序的设计方法..2掌握代码转换程序的设计方法..3进一步掌握各种程序结构..4熟练掌握和使用用DEBUG调试程序..二、实验内容1编制两个多字节整数加法和减法程序;并将结果按十六进制形式显示在屏幕上..2编制程序实现二进制定点数与十进制数的ASCII码串之间转换;并将结果显示在屏幕上..3编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商;并以十进制形式输出..4写程序把从键盘输入的四位十六进制数转换为压缩的BCD码;并显示输出..5编写一通用过程用来将十进制数从键盘输入转换为P从键盘输入进制数..三、实验设备PC机一台四、实验步骤1 按程序流程图编制实验程序..2 输入源程序..3 汇编、连接程序;执行程序;检查结果..4 程序的执行可用DEBUG的G命令;也可用T命令单步跟踪执行..5 用D命令检查执行结果..六、源程序实验一DA TA SEGMENTNUM1 DB 22H;33H;44H;55H;66H;77H NUM1L DB 6HNUM2 DB 22H;22H;22H;22HNUM2L DB 4HOUTCOME1 DB 10H DUP0OUTCOME2 DB 10H DUP0N DB 0HDA TA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP0STACK1 ENDSCODE SEGMENTASSUME CS:CODE;DS:DATA;SS:STACK1 START:MOV AX;DA TAMOV DS;AXMOV CH;0MOV SI;OFFSET NUM1MOV DI;OFFSET NUM2MOV AH;NUM1LMOV AL;NUM2LCMP AH;ALJAE CHAXCHG SI;DIXCHG AH;ALCHA:SUB AH;ALMOV CL;ALCLCMOV BX;OFFSET OUTCOME1LOP1:MOV AL;DIPUSH CXMOV CL;SIADC CL;ALMOV BX;CLINC BXINC SIINC DIPOP CXLOOP LOP1MOV CL;AHLOP2:PUSH CXMOV CL; BYTE PTR SIADC CL;0MOV BX;CLPOP CXINC BXINC SILOOP LOP2LOP3:MOV CH;0MOV SI;OFFSET NUM1MOV DI;OFFSET NUM2MOV AH;NUM1LMOV AL;NUM2LCMP AH;ALJAE CHA1XCHG SI;DIXCHG AH;ALCHA1:SUB AH;ALMOV CL;ALCLCMOV BX;OFFSET OUTCOME2 LOP11:MOV AL;DIPUSH CXMOV CL;SISBB CL;ALMOV BX;CLINC BXINC SIINC DIPOP CXLOOP LOP11MOV CL;AHJCXZ LOP7LOP21:PUSH CXMOV CL; BYTE PTR SISBB CL;0MOV BX;CLPOP CXINC BXINC SILOOP LOP21LOP7:MOV DI;OFFSET OUTCOME1 ADD DI;10HLOP4: MOV DL;DIDEC DICMP N;0HJNE LOP5CMP DL;0HJE LOP9LOP5:PUSH DXPUSH CXMOV CL;4HSHR DL;CLPOP CXCMP DL;9HJBE LOP6ADD DL;7HLOP6:ADD DL;30HMOV AH;2INT 21HMOV N;1HPOP DXAND DX;0FHCMP DL;9HJBE LOP8ADD DL;7HLOP8:ADD DL;30HMOV AH;2INT 21HMOV DL;'H'MOV AH;2INT 21HLOP9:LOOP LOP4MOV N;0MOV DI;OFFSET OUTCOME2 ADD DI;10HMOV CX;11HLOP14: MOV DL;DIDEC DICMP N;0HJNE LOP15CMP DL;0HJE LOP19LOP15:PUSH DXPUSH CXMOV CL;4HPOP CXCMP DL;9HJBE LOP16ADD DL;7HLOP16:ADD DL;30HMOV AH;2INT 21HMOV N;1HPOP DXAND DX;0FHCMP DL;9HJBE LOP18ADD DL;7HLOP18:ADD DL;30HMOV AH;2INT 21HMOV DL;'H'MOV AH;2INT 21HLOP19:LOOP LOP14MOV AH;4CHINT 21HCODE ENDSEND START实验2DA TA SEGMENTTISHI1 DB 'Please enter the first number:';'$' TISHI2 DB 'Please enter the second number:';'$' JIA DB '+';'$'JIAN DB '-';'$'CHENG DB '*';'$'CHU DB '/';'$'DENG DB '=';'$'YU DB '......';'$'A DB 10B DW 10C DW 10000F DW 0HNUM1 DW 0HNUM2 DW 0HN1 DB 4HDA TA ENDSSTACK1 SEGMENT STACKDW 30H DUP0STACK1 ENDSCODES SEGMENTASSUME CS:CODES;DS:DATASTART:MOV AX;DA TAMOV DS;AXMOV DX;OFFSET TISHI1MOV AH;09HINT 21HLOOP2:MOV AX;NUM1MUL BMOV BX;AXMOV AH;1INT 21HCMP AL;0DHJE LOP1MOV NUM1;BXMOV AH;0SUB AL;30HADD NUM1;AXJMP LOOP2LOP1:MOV DL;0AH 输出换行和回车MOV AH;2INT 21HMOV DL;0DHMOV AH;2INT 21HMOV DX;OFFSET TISHI2MOV AH;09HINT 21HLOOP1:MOV AX;NUM2MUL BMOV BX;AXMOV AH;1INT 21HCMP AL;0DHJE LOP3MOV NUM2;BXMOV AH;0SUB AL;30HADD NUM2;AXJMP LOOP1LOP3:MOV DL;0AH 输出换行和回车MOV AH;2INT 21HMOV DL;0DHMOV AH;2INT 21HMOV N;0MOV DX;NUM1MOV F;DXLOP6:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOP7MOV F;AXJMP LOP6LOP7:MOV CL;NMOV CH;0LOP16:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOP16MOV DX;NUM2MOV F;DXMOV N;0MOV DX;OFFSET JIAMOV AH;09H INT 21HLOOOP6:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOOP7MOV F;AXJMP LOOOP6LOOOP7:MOV CL;NMOV CH;0LOOOP16:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOOP16MOV DX;OFFSET DENGMOV AH;09HINT 21HMOV N;0LOOP3:MOV AX;NUM1ADD AX;NUM2MOV F;AXLOOP4:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP5MOV F;AXJMP LOOP4LOOP5:MOV CL;NMOV CH;0LOOP0:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP0MOV DL;0AH 输出换行和回车MOV AH;2INT 21HMOV DL;0DHMOV AH;2INT 21HMOV N;0MOV DX;NUM1MOV F;DXLOP61:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOP71MOV F;AXJMP LOP61LOP71:MOV CL;NMOV CH;0LOP161:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOP161MOV DX;NUM2MOV F;DXMOV N;0MOV DX;OFFSET JIANMOV AH;09H INT 21H LOOOP61:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOOP71MOV F;AXJMP LOOOP61LOOOP71:MOV CL;NMOV CH;0LOOOP161:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOOP161MOV DX;OFFSET DENGMOV AH;09HINT 21HMOV N;0MOV N;0MOV AX;NUM1SUB AX;NUM2MOV F;AXAND AX;10000000BCMP AX;10000000BJNE LOOP6NEG FLOOP6:MOV DX;0MOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP7MOV F;AXJMP LOOP6LOOP7:MOV CL;NMOV CH;0LOOP16:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP16MOV DL;0AH 输出换行和回车MOV AH;2INT 21HMOV DL;0DHMOV AH;2INT 21HMOV N;0MOV DX;NUM1MOV F;DXLOP62:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOP72MOV F;AXJMP LOP62LOP72:MOV CL;NMOV CH;0LOP162:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOP162MOV DX;NUM2MOV F;DXMOV N;0MOV DX;OFFSET CHENGMOV AH;09HINT 21HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOOP72MOV F;AXJMP LOOOP62LOOOP72:MOV CL;NMOV CH;0LOOOP162:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOOP162MOV DX;OFFSET DENGMOV AH;09HINT 21HMOV N;0MOV AX;NUM1MUL NUM2DIV CPUSH DXMOV F;AXMOV N;0LOOP8:MOV DX;0MOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP9MOV F;AXJMP LOOP8LOOP9:MOV CL;NMOV CH;0LOOP17:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP17MOV N;0POP FMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP11MOV F;AXJMP LOOP10LOOP11:MOV AL;NCMP AL;4HJE LOOP20MOV AL;4HSUB AL;NMOV CL;ALMOV CH;0LOOP19:MOV DX;'0'MOV AH;2INT 21HLOOP LOOP19LOOP20:MOV CL;NMOV CH;0LOOP18:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP18MOV DL;0AH 输出换行和回车MOV AH;2INT 21HMOV DL;0DHMOV AH;2INT 21HMOV N;0MOV DX;NUM1MOV F;DXLOP64:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOP74MOV F;AXJMP LOP64LOP74:MOV CL;NMOV CH;0LOP164:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOP164MOV DX;NUM2MOV F;DXMOV N;0MOV DX;OFFSET chuMOV AH;09HINT 21HLOOOP64:MOV DX;0HMOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOOP74MOV F;AXJMP LOOOP64LOOOP74:MOV CL;NMOV CH;0LOOOP164:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOOP164MOV DX;OFFSET DENGMOV AH;09HINT 21HMOV N;0MOV AX;NUM1MOV DX;0DIV NUM2PUSH DXMOV F;AXMOV N;0LOOP15:MOV DX;0MOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP12MOV F;AXJMP LOOP15LOOP12:MOV CL;NMOV CH;0LOOP21:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP21MOV DX;OFFSET YUMOV AH;09HINT 21HPOP FMOV N;0LOOP13:MOV DX;0MOV AX;FDIV BPUSH DXINC NCMP AX;0HJE LOOP14MOV F;AXJMP LOOP13LOOP14:MOV CL;NMOV CH;0HLOOP22:POP DXADD DX;30HMOV AH;2INT 21HLOOP LOOP22MOV AH;4CHINT 21HCODES ENDSEND START实验五输入输出程序设计一、实验目的1 掌握输入输出程序的编写方法..2 熟悉系统功能调用的方法..3 熟悉动画程序的编写方法..二、实验内容1在CRT上每隔一秒连续显示字符0-9..编程提示为了使输出的字符之间有空格;在每一个循环中输出一个0-9的字符和一个空格..为了输出0-9;置寄存器BL初值为0;每循环一次使其增量..为了保证输出是十进制;增量后用DAA调整指令..由于输出为一位十进制数;用AND 0FH 指令屏蔽高4位..2用系统功能调用将‘HELLO’由键盘输入;再从屏幕输出‘***HELLO***’..3编制在屏幕上画线的子程序;调用该子程序画一矩形..4编制字母下落一行的子程序;调用该子程序使字母从屏幕顶部下落到底部..5创建一磁盘文件;保存从键盘输入的字符串..6编写程序用设置系统时间;首先从键盘以十进制数形式输入时间;然后修改系统时间;并重新以十进制形式显示时间..7编写程序将屏幕分割成格状;每一格涂上不同颜色;格数从键盘输入..8编写程序在屏幕上显示菜单;输入相应菜单的序号后;选种该菜单项..三、实验设备PC机一台四、实验步骤1 按程序流程图编制实验程序..2 输入源程序..3 汇编、连接程序;执行程序;检查结果..4)程序的执行可用DEBUG的G命令;也可用T命令单步跟踪执行..五、源程序实验五EXAM5-1STACK SEGMENT STACKDB 1024 DUP0STACK ENDSCODE SEGMENTASSUME CS:CODE;SS:STACKSTART:MOV BL; 0LP:MOV DL; 20HMOV AH; 2INT 21HMOV AL; BLADD AL; 0DAAAND AL; 0FHMOV BL; ALPUSH BXOR AL; 30HMOV DL; ALMOV AH; 2INT 21HMOV BX; 3E8HLP2:MOV CX; 176H ;延时1msLP1:PUSHFPOPFLOOP LP1DEC BXJNZ LP2POP BXINC BLJMP LPCODE ENDSEND START执行程序EXAM5-1·EXE;屏幕上依次循环显示一个数字一个空格:0 1 2 3 4 5 6 7 8 9 ……实验五EXAM5-2STACK SEGMENT STACKDB 1024 DUP0STACK ENDSDATA SEGMENTBUFF DB 6;7 DUP ;‘$’DATA ENDSINPUT MACRO BUFEMOV DX; OFFSET BUFEMOV AH; 0AHINT 21HENDMPUTCHAR MACRO CHARMOV DL; CHARMOV AH; 02HINT 21HENDMCODE SEGMENTASSUME CS:CODE;DS:DA TA;SS:STACK START:MOV AX; DATAMOV DS; AXINPUT BUFF ;读取字符串➝BUFFPUTCHAR 0DHPUTCHAR 0AH ;光标另起一行MOV CX; 0003HNEXT:PUTCHAR 2AHLOOP NEXTMOV CL; BUFF+1SUB CH; CHMOV BX; OFFSET BUFF+2BEGIN:MOV AL; BXPUTCHAR ALINC BXLOOP BEGINMOV CX; 0003HNEXT1:PUTCHAR 2AHLOOP NEXT1MOV AH; 4CHINT 21HCODE ENDSEND START执行程序EXAM5-2·EXE;输入HELLO↙屏幕上显示结果:*** HELLO ***实验五 EXAM5-5NAME EXAM6SSTACK SEGMENT STACK ’stack’DB 1024 DUPSSTACK ENDSDATA SEGMENTASKNAME DB 0DH;0AH;’Enter the’DB ’dest file name:$’ASKCONT DB 0DH;0AH;’Enter the string’DB ’as file content:’0dh;0ah;’$’ FILEBUF DB 62;63DUPHAND_D DWMSGMER DB 0DH;0AH;0AHDB ’Directory full’;0DH;0AH;’$’ MSGWER DB 0DH;0AH;0AHDB ’Disk full’;0DH;0AH;’$’ MSGSUC DB 0DH;0AH;0AH;DB ’Write file is Successful’DB 0DH;0AH;’$’DATA ENDSDISPLY MACRO TEXTMOV DX;OFFSET TEXTMOV AH;09HINT 21HENDMCRHAND MACRO PATH;ATTRMOV DX;OFFSET PATH ;文件名MOV CL;ATTR ;文件属性XOR CH;CHMOV AH;3CHINT 21HENDMWRHAND MACRO HAND;BUFF;BYTEMOV BX;HANDMOV DX;OFFSET BUFFADD DX;2MOV CL;BYTEXOR CH;CHMOV AH;40HINT 21HENDMCLHAND MACRO HANDMOV BX;HANDMOV AH;3EHINT 21HENDMCODE SEGMENTPROG PROC FARASSUME CS:CODE;DS:DATA;SS:SSTACKPUSH DSMOV AX;0PUSH AXMOV AX;DATAMOV DS;AXDISPLY ASKNAME ;提示输入文件名MOV DX;OFFSET FILEBUFMOV AH;0AHINT 21HMOV DI;OFFSET FILEBUF2MOV BL;FILEBUF1XOR BH;BHMOV BYTE PTRBXDI;00HCRHAND FILEBUF2;0 ;创建并打开新文件JC CRTERRMOV HAND_D;AX ;存文件句柄DISPLY ASKCONT ;提示键入文件内容MOV DX;OFFSET FILEBUFMOV AH;0AHINT 21HWRHAND HAND_D;FILEBUF;FILEBUF1JC WRITERRCLHAND HAND_DDISPLY MSGSUCJMP EXITCRTERR:DISPLY MSGMERJMP EXITWRITERR:DISPLY MSGWEREXIT:RETPROG ENDPCODE ENDSEND PROG。
汇编实验报告一实验总结
汇编实验报告一实验总结
实验报告一:汇编实验总结
实验目的:通过汇编实验,掌握汇编语言的基本语法和编程技巧,加深对计算
机底层工作原理的理解。
实验过程:在实验中,我们首先学习了汇编语言的基本语法和指令格式,包括
寄存器的使用、内存地址的访问、算术运算和逻辑运算等。
随后,我们进行了
一系列的编程练习,包括编写简单的程序来实现加法、乘法、比较大小等功能。
在实验的最后阶段,我们还学习了如何调用系统中断来实现输入输出操作。
实验结果:通过本次实验,我们深入了解了汇编语言的编程技巧和应用场景。
我们不仅掌握了汇编语言的基本语法,还学会了如何编写简单的汇编程序来实
现一些基本的功能。
同时,通过实验,我们对计算机底层的工作原理有了更深
入的理解,对计算机系统的运行机制有了更清晰的认识。
实验总结:本次汇编实验让我们深入了解了汇编语言的基本知识和编程技巧,
为我们今后的学习和工作打下了坚实的基础。
通过实验,我们不仅学会了如何
使用汇编语言编写程序,还对计算机系统的底层工作原理有了更深入的理解。
希望在今后的学习和工作中,我们能够继续深入研究汇编语言,不断提高自己
的编程水平,为计算机科学技术的发展贡献自己的力量。
汇编实验报告
实验一:用表格形式显示字符1.实验要求:按15行*16列的表格形式显示ASCLL码为10H—100H的所有字符,即以行为主的顺序及ASCLL码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCLL为0)隔开。
2.实验方法与步骤:(1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:Mov ah,02hMov dl,输出字符的ASCLL码Int 21h把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASCLL码。
(2)显示空白符时,用其ASCLL码0置入dl寄存器。
每行结束时,用显示回车(ASCLL 为0dH)和换行符(ASCLL为0aH)来结束本行并开始下一行。
(3)由于逐个显示相继的ASCLL字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCLL字符。
具体的用法是:在显示空白或回车、换行符前用指令Push dx把dl的内容保存到堆栈中去。
在显示空白或回车、换行符后用指令Pop dx恢复dl寄存器的原始内容。
3.程序代码DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码main proc farASSUME CS:CODESpush dssub ax,axpush axmov bl,15;输出15行mov dl,10hloo:mov cx,16next:mov ah,02hint 21hinc dlpush dx;********每行16个字母mov dl,0mov ah,02hint 21hpop dxloop nextpush dx;***********回车换行mov dl,0dhmov ah,02hint 21hmov dl,0ahmov ah,02hint 21hpop dxdec blcmp bl,0jne looje exitexit: MOV AH,01hINT 21hMOV AX, 4chINT 21hmain endpMOV AH,4CHINT 21HCODES ENDSEND4.实验结果5.分析与结论程序的主体是一个简单的循环输出,包含内外两个循环,一个是每行内16个字符的循环输出,一个是总行数15行的循环输出。
汇编语言编程实验报告
汇编语言编程实验报告汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ......................................................错误!未定义书签。
二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ......................................................错误!未定义书签。
六、实验六: (19)七、汇编实验总结 (23)实验一一.实验题目【汇编语言补充作业T20】编写完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。
二.程序流程及思路实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;3、在输入的字符串尾加上‘$’字符,以作为输出结束条件。
实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;2、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。
三.源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09HLEA DX,CRINT 21H ;回车换行MOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$ MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START四.结果拷屏实验二一. 实验题目【汇编语言补充作业T23】假设CX:BX中存放了4为非压缩的BCD码表示的十进制数4386,请编写完整程序将这个数转化成2进制数并存放到DI寄存器中。
汇编语言编程实验报告
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
汇编器实验报告
汇编器实验报告篇一:汇编实验报告实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUFDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DSXOR AX,AXPUSH AXMOVAX,DATAMOV DS,AXMOV BX,OFFSET BUF MOV CX,CNDEC CXMOV AL,[BX]INC BXLP:CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
1图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。
汇编语言实验报告
汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串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指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。
汇编实验报告6
汇编实验报告6汇编实验报告6引言:汇编语言是一种底层编程语言,它直接操作计算机硬件,提供了对计算机底层资源的更精确控制。
在本次实验中,我们将继续学习和实践汇编语言的相关知识,探索其在计算机系统中的作用和应用。
一、实验目的本次实验旨在加深我们对汇编语言的理解,并通过实践进一步掌握汇编语言的基本概念、语法和应用。
具体目标如下:1. 掌握汇编语言的基本指令和寻址方式;2. 理解和实现简单的汇编程序;3. 学会使用调试工具调试汇编程序。
二、实验环境本次实验使用的环境为Windows操作系统和MASM汇编器。
在实验开始前,我们需要确保已经正确安装了MASM汇编器,并配置好了相关环境变量。
三、实验过程1. 编写程序本次实验我们将编写一个简单的汇编程序,实现两个数相加并输出结果的功能。
首先,我们需要使用文本编辑器打开一个新的文件,并保存为.asm格式。
接下来,我们将按照汇编语言的语法规则,逐步编写程序。
2. 汇编程序的结构一个标准的汇编程序由三个部分组成:数据段、代码段和堆栈段。
在数据段中,我们定义了需要使用的变量和常量;在代码段中,我们编写了实际的汇编指令;而堆栈段则用于存储程序执行过程中的临时数据。
3. 汇编指令的使用在本次实验中,我们将使用一些常见的汇编指令,如MOV、ADD、SUB等。
这些指令用于操作寄存器、内存和立即数,实现数据的传输、运算和比较等功能。
4. 调试程序编写完汇编程序后,我们需要使用调试工具对程序进行调试,以确保程序的正确性。
调试工具可以帮助我们逐条执行程序,并查看寄存器和内存的变化,从而找出程序中的错误。
四、实验结果与分析经过编写和调试,我们成功地实现了两个数相加并输出结果的功能。
我们可以通过调试工具查看程序执行过程中寄存器和内存的变化,以验证程序的正确性。
同时,我们还可以对程序进行性能分析,了解其在不同输入情况下的执行效率。
五、实验总结通过本次实验,我们深入学习了汇编语言的基本概念和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三算术运算与代码转换程序设计一、实验目的1)掌握算术运算程序的设计方法。
2)掌握代码转换程序的设计方法。
3)进一步掌握各种程序结构。
4)熟练掌握和使用用DEBUG调试程序。
二、实验内容1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。
2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏幕上。
3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。
4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。
5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)进制数。
三、实验设备PC机一台四、实验步骤1) 按程序流程图编制实验程序。
2) 输入源程序。
3) 汇编、连接程序,执行程序,检查结果。
4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。
5) 用D命令检查执行结果。
六、源程序实验一DATA SEGMENTNUM1 DB 22H,33H,44H,55H,66H,77HNUM1L DB 6HNUM2 DB 22H,22H,22H,22HNUM2L DB 4HOUTCOME1 DB 10H DUP(0)OUTCOME2 DB 10H DUP(0)N DB 0HDATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV CH,0MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHAXCHG SI,DIXCHG AH,ALCHA:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI] PUSH CXMOV CL,[SI]ADC CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP1MOV CL,AHJCXZ LOP3LOP2:PUSH CXMOV CL, BYTE PTR [SI] ADC CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP2LOP3:MOV CH,0MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHA1XCHG SI,DIXCHG AH,ALCHA1:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME2 LOP11:MOV AL,[DI]PUSH CXMOV CL,[SI]SBB CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP11MOV CL,AHJCXZ LOP7LOP21:PUSH CXMOV CL, BYTE PTR [SI] SBB CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP21LOP7:MOV DI,OFFSET OUTCOME1 ADD DI,10HMOV CX,11HLOP4: MOV DL,[DI]DEC DICMP N,0HJNE LOP5CMP DL,0HJE LOP9LOP5:PUSH DXPUSH CXMOV CL,4HSHR DL,CLPOP CXJBE LOP6ADD DL,7HLOP6:ADD DL,30HMOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FHCMP DL,9HJBE LOP8ADD DL,7HLOP8:ADD DL,30HMOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HLOP9:LOOP LOP4MOV N,0MOV DI,OFFSET OUTCOME2 ADD DI,10HMOV CX,11HLOP14: MOV DL,[DI] DEC DICMP N,0HJNE LOP15JE LOP19LOP15:PUSH DX PUSH CXMOV CL,4HSHR DL,CLPOP CXCMP DL,9HJBE LOP16ADD DL,7HLOP16:ADD DL,30H MOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FHCMP DL,9HJBE LOP18ADD DL,7HLOP18:ADD DL,30H MOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HLOP19:LOOP LOP14 MOV AH,4CHINT 21HCODE ENDSEND START实验2DATA SEGMENTTISHI1 DB 'Please enter the first number:','$' TISHI2 DB 'Please enter the second number:','$' JIA DB '+','$'JIAN DB '-','$'CHENG DB '*','$'CHU DB '/','$'DENG DB '=','$'YU DB '......','$'A DB 10B DW 10C DW 10000F DW 0HNUM1 DW 0HNUM2 DW 0HN DB 0HN1 DB 4HDATA ENDSSTACK1 SEGMENT STACKDW 30H DUP(0)STACK1 ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET TISHI1MOV AH,09HINT 21HLOOP2:MOV AX,NUM1MUL BMOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP1MOV NUM1,BXMOV AH,0SUB AL,30HADD NUM1,AXJMP LOOP2LOP1:MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DX,OFFSET TISHI2MOV AH,09HINT 21HLOOP1:MOV AX,NUM2MUL BMOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP3MOV NUM2,BXMOV AH,0SUB AL,30HADD NUM2,AXJMP LOOP1LOP3:MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP6:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP7MOV F,AXJMP LOP6LOP7:MOV CL,NMOV CH,0LOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP16MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET JIA MOV AH,09H INT 21H LOOOP6:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP7MOV F,AXJMP LOOOP6 LOOOP7:MOV CL,NMOV CH,0LOOOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP16MOV DX,OFFSET DENGMOV AH,09HINT 21HMOV N,0LOOP3:MOV AX,NUM1ADD AX,NUM2MOV F,AXLOOP4:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP5MOV F,AXJMP LOOP4LOOP5:MOV CL,NMOV CH,0LOOP0:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP0MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP61:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP71MOV F,AXJMP LOP61LOP71:MOV CL,NMOV CH,0LOP161:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP161MOV DX,NUM2MOV N,0MOV DX,OFFSET JIANMOV AH,09H INT 21H LOOOP61:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP71MOV F,AXJMP LOOOP61LOOOP71:MOV CL,NMOV CH,0LOOOP161:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP161MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0MOV N,0MOV AX,NUM1SUB AX,NUM2AND AX,BCMP AX,BJNE LOOP6NEG FLOOP6:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP7MOV F,AXJMP LOOP6LOOP7:MOV CL,NMOV CH,0LOOP16:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP16MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DX,NUM1MOV F,DXLOP62:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP72MOV F,AXJMP LOP62LOP72:MOV CL,NMOV CH,0LOP162:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP162MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET CHENGMOV AH,09HINT 21HLOOOP62:MOV DX,0HMOV AX,FPUSH DXINC NCMP AX,0HJE LOOOP72MOV F,AXJMP LOOOP62LOOOP72:MOV CL,NMOV CH,0LOOOP162:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP162MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0MOV AX,NUM1MUL NUM2DIV CPUSH DXMOV F,AXMOV N,0LOOP8:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP9MOV F,AXJMP LOOP8 LOOP9:MOV CL,NMOV CH,0LOOP17:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP17MOV N,0POP FLOOP10:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP11MOV F,AXJMP LOOP10LOOP11:MOV AL,NCMP AL,4HJE LOOP20MOV AL,4HSUB AL,NMOV CL,ALMOV CH,0LOOP19:MOV DX,'0'MOV AH,2INT 21HLOOP LOOP19LOOP20:MOV CL,NMOV CH,0LOOP18:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP18MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP64:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP74MOV F,AXJMP LOP64LOP74:MOV CL,NMOV CH,0LOP164:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOP164MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET chuMOV AH,09HINT 21HLOOOP64:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP74MOV F,AXJMP LOOOP64LOOOP74:MOV CL,NMOV CH,0LOOOP164:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOOP164MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0MOV AX,NUM1MOV DX,0DIV NUM2PUSH DXMOV F,AXMOV N,0LOOP15:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP12MOV F,AXJMP LOOP15LOOP12:MOV CL,NMOV CH,0LOOP21:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP21MOV DX,OFFSET YU MOV AH,09HINT 21HPOP FMOV N,0LOOP13:MOV DX,0MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP14MOV F,AXJMP LOOP13LOOP14:MOV CL,NMOV CH,0HLOOP22:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP22MOV AH,4CHINT 21HCODES ENDSEND START实验五输入输出程序设计一、实验目的1) 掌握输入输出程序的编写方法。