福建农林大学_汇编实验三_分支循环程序设计详解
- 格式:doc
- 大小:183.50 KB
- 文档页数:10
实验三分支、循环程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
3. 掌握循环结构程序设计、调试方法的方法。
二、实验设备TDN86/88教学实验系统一台。
三、实验内容及步骤1.已知有一个长x个字的数据块,存放在以0202H:1000H开始的存储区域内。
试编写一个完整的汇编语言程序,将该数据块复制到以0202H:1008H开始的存储区内。
(根据x的大小,判断从首地址,还是末地址传送)实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)在0202H:1000H开始的X个单元中依次存入数据,即:E0202:1000↙,并输入01、02、03、04、05、06、07、08……。
(3)G=0000:2000↙,运行以上程序(4)D0202:1008↙,显示结果为:01、02、03、04、05、06、07、08……。
(5)反复试几组数,考察程序的正确性。
2.在ADDR开始的单元中存放着一个字,将字中1的个数存入COUNT单元中。
算法:要测出1的个数就应逐位比较,可根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。
可以用测试字是否为0来作为结束条件,这样可缩短程序的执行时间,对不同的字循环次数不同,因此采用当型循环结构。
实验步骤(1)编制实验程序输入程序并检查无误,经汇编、连接后装入系统。
(2)用U0000:2000查看 MOV AX,XXXX(DATA)语句,即得到数据段段地址DS=XXXX用E命令EXXXX:0000↙,输入数据39,A3(3)G=0000:2000↙,运行实验程序。
(4)D XXXX:0002↙,显示应为结果________。
(5)反复试几组数,考察程序的正确性。
3.在当前数据段(DS决定),偏移地址为DATAB开始的顺序20个单元中,存放着某班80名同学某门考试的成绩。
编写程序统计大于等于90分;80-89分;70-79分;60-69分;小于60分的人数各位多少,并将结果放在同一数据段,偏移地址为BTRX开始的顺序单元中。
福建农林大学金山学院(程序设计类课程)实验报告课程名称:汇编语言姓名:陈振韦系:信息与机电工程专业:电子信息工程年级:2012级学号: 126710100指导教师:刘永芬职称:讲师2013~2014学年第二学期实验项目列表福建农林大学金山学院实验报告系:信息与机电工程系专业:电子信息工程年级: 12 姓名:陈振韦学号: 126710100 实验课程:汇编语言实验室号:___试验A楼_608_ 实验设备号:实验时间: 2014,4,9 指导教师签字:刘永芬成绩:实验一汇编程序的汇编及运行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的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)在记事本编写源程序 1.txt,masm 1.txe 回车,回车,出现提示输入1,生成1.lst,打开1.lst,查看内容。
汇编-循环与分支程序设计汇编-循环与分支程序设计1.引言在汇编语言中,循环与分支是非常重要的程序设计概念。
循环用于重复执行一段代码,而分支用于根据条件来选择不同的代码路径。
本文将详细介绍汇编语言中的循环与分支程序设计。
2.循环程序设计2.1 for 循环在汇编语言中,for 循环可以通过计数器和条件判断来实现。
以下是一个示例代码:________mov ecx, 10 。
设置计数器初始值为 10mov eax, 0 。
设置累加器初始值为 0for_loop:________add eax, ecx 。
累加计数器的值到累加器loop for_loop 。
循环,直到计数器为 0在上述示例代码中,循环的条件是计数器 ecx 的值非零。
每次循环时,累加器 eax 会将计数器的值累加到自身,然后计数器会自动减一,直到计数器为 0,循环结束。
2.2 while 循环在汇编语言中,while 循环可以通过条件判断来实现。
以下是一个示例代码:________mov eax, 0 。
设置累加器初始值为 0while_loop:________cmp eax, 10 。
比较累加器的值和 10jge end_while 。
如果累加器的值大于等于 10,跳出循环add eax, 1 。
累加器加 1jmp while_loop 。
跳到 while_loop 标签,继续循环end_while:________在上述示例代码中,循环的条件是累加器 eax 的值小于 10。
每次循环时,累加器会加 1,然后再进行条件判断,如果满足条件继续循环,否则跳出循环。
3.分支程序设计3.1 if-else 语句在汇编语言中,if-else 语句可以通过条件判断来实现。
以下是一个示例代码:________mov eax, 10 。
设置变量的初始值为 10cmp eax, 5 。
比较变量的值和 5jg greater 。
如果变量的值大于 5,跳转到greater 标签less:________。
福建农林大学金山学院实验报告系(教研室):信息与机电工程系专业:计算机科学与技术年级:2009 实验课程:Java 姓名:陈方波学号:092231042 实验室号:___605_ 计算机号:J605S042 实验时间:2011.05.19 指导教师签字:成绩:实验三流程控制一、实验目的和要求1、掌握分支、循环语句的使用。
2、打印的乘法表应该呈现阶梯状。
3、给定一个1-99999之间的整型数,程序可以判断它的位数,并判断是否是回文数。
4、实验报告给出完整代码。
二、实验内容和原理1、用循环语句打印一个99乘法表。
2、判断回文数(逆序排列后得到的数和原数相同)。
三、实验环境WindowXP系统NetBeans/JDK四、算法描述及实验步骤1、每项实验内容建立新类2、在main方法中编程五、实验结果12六、总结1.熟悉了分支、循环语句的使用。
2.对回文数有了了解。
附录:1.乘法表:classcfb{publicstaticvoidmain(String[]args){ inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)System.out.print(j+"*"+i+"="+i*j+" ");System.out.println();}}}2.判断回数:importjava.util.Scanner;classhws{publicstaticvoidmain(String[]args){intg,s,b,q,w,number;System.out.println("请输入一个1~99999之间的整形数");Scannerinput=newScanner(System.in);number=input.nextInt();if(number>=1&&number<10)System.out.println("这是个一位数");if(number>=10&&number<100){System.out.println("这是个两位数");s=number/10;g=number%10;System.out.println("十位数:"+s+"个位数:"+g);if(s==g)System.out.println("这个数是回文数");elseSystem.out.println("这个数不是回文数");}if(number>=100&&number<1000){System.out.println("这是个三位数");b=number/100;s=(number%100)/10;g=number%10;System.out.println("百位数:"+b+"十位数:"+s+"个位数:"+g);if(b==g)System.out.println("这个数是回文数");elseSystem.out.println("这个数不是回文数");}if(number>=1000&&number<10000){System.out.println("这是个四位数");q=number/1000;b=(number%1000)/100;s=(number%100)/10;g=number%10;System.out.println("千位数:"+q+"百位数:"+b+"十位数:"+s+"个位数:"+g);if((q==g)&&(b==s))System.out.println("这个数是回文数");elseSystem.out.println("这个数不是回文数");}if(number>=10000&&number<100000){System.out.println("这是一个五位数");w=number/10000;q=(number%10000)/1000;b=(number%1000)/100;s=(number%100)/10;g=num ber%10;System.out.println("万位数:"+w+"千位数:"+q+"百位数:"+b+"十位数:"+s+"个位数:"+g); if(w==g&&q==s)System.out.println("这个数是回文数");elseSystem.out.println("这个数不是回文数");}}}。
福建农林大学金山学院实验报告系:信息与机电工程专业:电子信息工程年级: 2013 班级: 3班姓名:单瑞学号: 136710101 实验课程:汇编语言实验室号:金综B705实验时间:2015/6/12指导教师签字:刘永芬成绩:实验三分支循环程序设计1.实验目的和要求1、学习调试程序,查找逻辑错误;2、学习分支语句的编程和调试;3、学习循环语句的编程和调试。
2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1.有10个数,统计正数的个数,存放在变量M中中。
经过汇编后,形成EXE文件。
在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。
用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确。
(AL寄存器中存放正数的个数)DSEG SEGMENTMSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV AL, 0LEA SI, MSGL1: MOV BL, [SI]CMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START2.数据段中是一组无符号数,将最小数存放在M单元中。
按上题方法查找一处逻辑错误。
DSEG SEGMENTMSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 4MOV AL, MSGMOV SI, OFFSET MSG+1L1: CMP AL, [SI]JB NEXTMOV AL, [SI]NEXT: LOOP L1MOV M, ALMOV AL, 0INT 21HCSEG ENDSEND START3.编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。
微机原理汇编实验-分支、循环及子程序设计实验学生实验报告实验课程名称:微机原理汇编实验开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称分支、循环及子程序设计实验指导教师教师评语一、实验目的1.学习分支程序、循环结构程序的设计和调试方法。
2.学习子程序的定义和调试方法。
3.掌握分支、循环、子程序等程序的基本结构。
二、实验原理使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。
三、实验仪器、材料1.软件MASM5.02.PC微机一台四、实验步骤1.输入程序并检查无误,经汇编、连接后生成.EXE文件。
2.使用DEBUG命令运行以上程序。
3.反复试几组数,考察程序的正确性。
五、实验源代码;-------------------------------------------------;程序名:Lab201;功能:实现对NUM中 -128~127; 的数进行负数统计;备注:负数的个数存放在BL中并在屏幕输出;-------------------------------------------------DSEG SEGMENT;定义需要统计的各个数值,数据值不能大于127,不能小于-128 NUM DB -100,-100,1,-100,30,-10,127,89,-128,20;统计数据的个数LENG EQU ($-NUM)DSEG ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV CX,LENGMOV BX,0000HMOV AX,DSEGMOV DS,AXMOV SI,OFFSET NUMAGAIN:MOV DL,[SI]CMP DL,0000HJL LITTELJMP BIGLITTEL:INC BL ;程序结束返回DOSADD SI,1LOOP AGAINJMP FINISHBIG:ADD SI,1LOOP AGAINJMP FINISH;---------------------------------- ;子程序名:TRANNUM;功能:将数值转换为数字; 字符输出;入口参数:DL;出口参数:无;---------------------------------- TRANNUM PROC NEARMOV AL,DLXOR AH,AHMOV CX,2MOV DL,10TRAN1:DIV DLXCHG AH,ALADD AL,'0'PUSH AXXCHG AH,ALMOV AH,0LOOP TRAN1MOV CX,2TRAN2:POP DXCALL DISPLAYLOOP TRAN2RETTRANNUM ENDP;----------------------------------;子程序名:DISPLAY;功能:将单个字符显示输出;入口参数:DL;出口参数:无;----------------------------------DISPLAY PROC NEARMOV AH,02HINT 21HRETDISPLAY ENDPFINISH:MOV DL,BLCALL TRANNUM ;调用子程序:TRANNUM MOV AH,4CH ;程序结束返回DOSINT 21HMAIN ENDPCODE ENDSEND START六、实验过程原始记录(数据图表、计算等)1、打开命令提示符:输入cmd2、输入:cd G:/asm/tos3、输入:G:5、输入:masm lab2016、输入:link lab2017、输入:lab201七、实验结果分析从程序代码分析,所给数值中有5个负数,运行程序后输出结果为05,说明程序能够实现其统计负数个数的功能。
实验三分支程序、循环程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
3.加深对循环结构的理解。
4.掌握循环结构程序设计的方法以及调试方法。
二、实验设备PC机一台,TD-PITE实验装置一套。
三、实验内容:设计一数据块间的搬移程序。
设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图1所示。
图3-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。
但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。
参考流程:如图3-2所示。
图3-2 程序流程图实验程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1: MOV AL, [SI]MOV [DI], ALDEC SIDEC DIDEC CXJNE A1JMP A3A2: MOV AL, [SI]MOV [DI], ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND START实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统;2. 用E命令在以SI为起始地址的单元中填入16个数;3. 运行程序,然后再停止运行;4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
实验3 循环程序设计一、实验目的:掌握循环指令的使用方法;掌握实现单重、多重循环程序设计、编写、调试和运行的方法。
二、实验内容:1、从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,将累加和送入sum单元。
2、内存地址BUFFER开始存放着10个带符号字节数组,编写程序求数组中正数、零和负数的个数,并分别将它们存于PLUS开始的单元。
3、内存中有一串以“$”结尾的字符串,统计其中“A”出现的次数。
三、试验程序:1.DATAS SEGMENTSUM DW 0 ;定义一字节变量N DW 0 ;定义字节变量DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS ;建立短语段寄存器的关系START:MOV AX,DATASMOV DS,AXMOV CX,0 ;给CX寄存器赋值0MOV BX,1AGAIN: ADD SUM,BXADD BX,1INC CXCMP SUM,1000 ;当sum的数大于1000,结束循环JBE AGAINMOV N,CX ;将个数送到内存N单元中MOV AH,4CHINT 21HCODES ENDSEND START2.DATAS SEGMENTX DB 00H,3DH,15H,16H,0F5H,0F7H,64H,0F8H,0E5H,23H ;定义10个数ZHENGSHU DB? ;存放正数的个数FUSHU DB? ;存放负数的个数LING DB?;存放0的个数DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV SI,OFFSET X ;取x的偏移地址XOR AH,AH ; LINGXOR DH,DH ; FUSHUXOR DL,DL ; ZHENGSHUMOV CX,10AGAIN:MOV AL,[SI]TEST AL,0FFHJNZ ZHFUINC AH ; LINGJMP NEXT1ZHFU:ROL AL,1JC NEXTINC DLJMP NEXT1NEXT:INC DHNEXT1:INC SILOOP AGAINMOV LING,AH ;将结果分别送到相应的内存MOV FUSHU,DHMOV ZHENGSHU,DLMOV AH,4CHINT 21HCODES ENDSEND START3.DATA SEGMENTBUF DB'ANFAASFAWE$' ;定义字符串N DB 0 ;预留单元DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR BL,BLLEA SI,BUFLP2:MOV AL,[SI] ;取字符串的偏移地址CMP AL,'$'JZ LP3CMP AL,'A' ;取字符‘A’与AL的内容比较 JNZ LP1 ;不等则转移打到LP1INC BLLP1:INC SIJMP LP2LP3:MOV N,BLMOV AH,4CHINT 21HCODE ENDSEND START四、调试用U反汇编,查看内存的起始地址用g执行,用d查看结果040BH=1035 2DH=45 2.10个数所在的内存状况运算结果为正数5个,负数4个,零1个用E修改其中一个数结果为正数4个,负数5个,零1个3.字符串在内存的形式统计A的个数为4个用E修改字符串的内容为上结果A的个数为6个五.收获与体会:1.定义的变量与所规定的内容要一致。
福建农林大学计算机与信息学院实验报告
系:计算机专业:计算机科学与技术年级:2014
姓名学号:实验室号__ 计算机号
实验时间:2016-10-29指导教师签字:刘庆连成绩:
实验三分支循环程序设计
1.实验目的
(1)学习调试程序,查找逻辑错误;
(2)学习分支语句的编程和调试;
(3)学习循环语句的编程和调试。
2.实验内容
1)有10个数,统计正数的个数,存放在变量M中中。
经过汇编后,形成EXE文件。
在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。
用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL 寄存器中值的变化是否正确?(AL寄存器中存放正数的个数)
DSEG SEGMENT
MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6
M DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG
START: MOV AX, DSEG
MOV DS, AX
MOV CX, 10
MOV AL, 0
LEA SI, MSG
L1: MOV BL, [SI]
CMP BL, 0
JBE NEXT
INC AL
NEXT: INC SI
LOOP L1
MOV M, AL
MOV AL, 0
MOV AH, 4CH
INT 21H
CSEG ENDS
END START
2)数据段中是一组无符号数,将最小数存放在M单元中。
按上题方法查找一处逻辑错误。
DSEG SEGMENT
MSG DB 13, 15, 7, 25, 24
M DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG
START: MOV AX, DSEG
MOV DS, AX
MOV CX, 4
MOV AL, MSG
MOV SI, OFFSET MSG+1
L1: CMP AL, [SI]
JB NEXT
MOV AL, [SI]
NEXT: LOOP L1
MOV M, AL
MOV AL, 0
MOV AH, 4CH
INT 21H
CSEG ENDS
END START
3)编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。
4)编程:∑
-
=*
=
8
1
i
i i
B A
Y,Ai,Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。
4.算法描述及实验步骤
实验一:输入题目代码->保存->运行->调试->观察结果(在Masm for windows在完成)
实验二: 根据代码实现功能从MSG中输入五个数,AL取第一个数,SI取第二个数,比较AL,SI所取到的数的大小,若AL<SI,SI取第三个数,再和AL比较;若AL>SI,AL=[SI]; 将AL的内容输出,则得出输出五个数中的最小数,步骤同实验一
实验三:依题可编写如下代码指令
实验四:依题可编写如下代码指令
5.调试过程
无
6. 实验结果
【实验一】
分步执行结果如下
分析:当将第二个数-2放入放入BL的时候发现数值是FE,转化为十进制数是254,并非是-2的十六进制,原因是JBE命令是用于无符号数的,指令说明如下,要实现有符号数的比较要使用JLE指令
JBE指令说明JLE指令说明
【实验二】
分步执行结果如下
分析:进入死循环,原因是两个数比较后,SI没有加1,一直停留在13和15的比较中,修改加入INC SI即可,如下图
【实验三】
执行结果如下
分析,BUL中4, -2, -6, 0, 5, 67, 8, -3, 5, 6 0的个数是1,实验结果与预期一致
【实验四】结果如下图
分析:Ai:10,45和Bi:8,2的∑
-
=*
=
8
1
i
i i
B A
Y结果是10*8+45*2=170转化为16进制是AA,有上图可知实验结果和预期一致!
7. 总结
通过此次实验,能够通过简单调试查找出错误,分步执行发现逻辑错误并改正,掌握并理解了分支语句的运用和循环语句的使用,纸上得来终觉浅,绝知此事要躬行,多多手动敲代码才能理解并掌握汇编的实质!!
附录:
【实验三代码】
DSEG SEGMENT
BUF DB4, -2, -6, 0, 5, 67, 8, -3, 5, 6
RESULT DB?
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG
MOV DS, AX
MOV CX, 10
MOV AL, 0
LEA SI, BUF
L1: MOV BL, [SI]
CMP BL, 0
JNE NEXT
INC AL
NEXT: INC SI
LOOP L1
MOV RESULT, AL
MOV AL, 0
MOV AH, 4CH
INT 21H
CSEG ENDS
END START
【实验四代码】
DATA SEGMENT
NUM1 DB 10,45
NUM2 DB 8,2
REST DW?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,NUM1
LEA DI,NUM2
MOV CX,10
MOV BX,0
L1: MOV AL,[SI]
MUL BYTE PTR[DI]
ADD BX,AX
INC SI
INC DI
LOOP L1
MOV REST,BX
MOV AH,4CH
INT 21H
CODE ENDS END START。