汇编语言程序设计ppt课件.ppt_第1页
汇编语言程序设计ppt课件.ppt_第2页
汇编语言程序设计ppt课件.ppt_第3页
汇编语言程序设计ppt课件.ppt_第4页
汇编语言程序设计ppt课件.ppt_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用程序示例 代码转换 代码转换是程序设计中的常见问题 由于涉及到键盘输入 屏幕显示 打印机输出等I O操作往往都是处理字符的ASCII码值 作为对比 在计算机内部 指令运算的对象和结果都是二进制编码 一串0 1代码 输出显示的格式可能是二进制数 十进制数或者十六进制数 所以很多场合都要进行代码转换 例 把键盘上输入的一位十进制数 ASCII码 以二进制方式显示 ASCII码 EXE格式程序清单 DATASEGMENTUSE16MESG1DB PleaseEnter 0DH 0AH MESG2DB Error DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AX MOVAH 9MOVDX OFFSETMESG1INT21HMOVAH 1INT21H 输入一个字符CMPAL 39HJAERROR 如果大于39H则出错CMPAL 30HJBERROR 或JC 如果小于30H同样出错SUBAL 30H 或ANDAL 0FHMOVBL AL MOVAH 2MOVDL INT21HCALLDISPMOVAH 2MOVDL B INT21HJMPEXITERROR MOVAH 9MOVDX OFFSETMESG2INT21HEXIT MOVAH 4CHINT21H DISPPROCMOVCX 8LAST MOVDL 0 RCLBL 1JNCNEXTMOVDL 1 NEXT MOVAH 2INT21HLOOPLASTRETDISPENDPCODEENDSENDBEG COM格式程序清单 486CODESEGMENTUSE16ASSUMECS CODEORG100HSTART JMPBEGMESG1DB PleaseEnter 0DH 0AH MESG2DB Error BEG MOVAH 9MOVDX OFFSETMESG1INT21HMOVAH 1 INT21HCMPAL 39HJAERRORCMPAL 30HJBERRORSUBAL 30HMOVBL ALMOVAH 2MOVDL INT21HCALLDISPMOVAH 2 MOVDL B INT21HJMPEXITERROR MOVAH 9MOVDX OFFSETMESG2INT21HEXIT MOVAH 4CHINT21H DISPPROCMOVCX 8LAST MOVDL 0 RCLBL 1JNCNEXTMOVDL 1 NEXT MOVAH 2INT21HLOOPLASTRETDISPENDPCODEENDSENDSTART 就本例而言 COM文件体积为110个字节 而EXE文件为625个字节 显然 COM文件比EXE文件大大节省了空间 例 把两个字节存储单元X和X 1中低4位存储的两个0到9之间的数 非压缩BCD码 合并成一个压缩BCD码 结果存放到字节单元Y中 解 程序如下 DATASEGMENT 数据段XDB 5 7 YDB DATAENDSCODESEGMENT 代码段ASSUMECS CODE DS DATASTARTPROCFAR 定义FAR类型过程PUSHDS 预留返回DOS地址MOVAX 0PUSHAX MOVAX DATA 初始化DSMOVDS AXMOVAL X 取BCD码的高4位数MOVCL 4SHLAL CLMOVBL X 1 取BCD码的低4位ANDBL 0FHORAL BL 合并结果 能否改为XOR或ADDMOVY AL 存BCD码到Y单元 RETSTARTENDPCODEENDSENDSTART 源程序结束 例 把一个字单元的4位BCD码转换成二进制数 CODESEGMENTUSE16ASSUMECS CODEBCD NUMDW4567H 4567H 7 10 6 10 5 10 4 10 0 BEG MOVCX 4MOVAX 0 存放中间结果AGAIN ROLBCD NUM 4MOVBX BCD NUMANDBX 000FH 依次取出BCD NUM的千 百 十 个位的BCD码CALLMUL10LOOPAGAIN DISP MOVBP AXMOVCX 16LAST MOVAL 0 RCLBP 1ADCAL 0MOVAH 0EHINT10HLOOPLASTMOVAH 4CHINT21H MUL10PROCMOVDX 10MULDXADDAX BX 乘积的高16位存放在DX 始终为0RETMUL10ENDPCODEENDSENDBEG 特例 一个不大于99的BCD数可以直接用AAD指令求出等值的二进制数 MOVAX 0908HAAD 进制转换 进制转换过程中经常利用代码转换 例 把一个16位二进制数转换成十六进制数显示 486DATASEGMENTUSE16NUMDW01011B 1A2BHBUFDB4DUP H DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AXMOVSI OFFSETBUF 存放转换后的16进制数ASCII码 MOVDX NUM 取出二进制数SALEDX 16MOVCX 4 一个16位二进制数包括4位16进制数LP ROLEDX 4 图示EDX DX DL变化ANDDL 0FH DL低4位二进制必定介于0 15CMPDL 10JBNEXTNEXT ADDDL 30H 0 9 的ASCII介于30H 39H 与数值0 9相差30HMOV SI DLINCSILOOPLP MOVDX NUM 取出二进制数SALEDX 16MOVCX 4 一个16位二进制数包括4位16进制数LP ROLEDX 4 图示EDX DX DL变化ANDDL 0FH DL低4位二进制必定介于0 15CMPDL 10JBNEXTADDDL 7 A 的ASCII与10相差 37HNEXT ADDDL 30H 0 9 的ASCII介于30H 39H 与数值0 9相差30HMOV SI DLINCSILOOPLP MOVAH 9MOVDX OFFSETBUFINT21HMOVAH 4CHINT21HCODEENDSENDBEG 例 二进制数转换成十进制数显示 二进制数转换成十进制数有多种方法 即比较法 恢复余数法和除法求余 8位二进制数转换比较法程序清单 思路 需要注意 必须事先确定 操作数的字长 CMPDISPMACRONNLOCALLAST NEXTMOVDL 0LAST CMPBEN NNJCNEXTINCDLSUBBEN NNJMPLASTNEXT ADDDL 30HMOVAH 2INT21HENDM CODESEGMENTUSE16ASSUMECS CODEBENDB10101110B 等于十进制数174BEG CMPDISP100 求百位上的数字CMPDISP10 求十位上的数字CMPDISP1 求个位上的数字MOVAH 4CHINT21HCODEENDSENDBEG 特例 一个不大于99的二进制数 转换成十进制数显示更简单 MOVAX 01100010B AH 0 AL 98AAM AH 09H AL 08HADDAX 3030H AH 39H AL 38HPUSHAXROLAX 8 AH 38H AL 39HMOVAH 0EHINT10H 0E号10H的BIOS调用等价与2号DOS功能调用 显示一个字符 其ASCII码放在AL中 POPAXMOVAH 0EHINT10H 除法求余法 把一个32位二进制数转换成十进制数 并显示在显示器上 486CODESEGMENTUSE16ASSUMECS CODENUM32DD3456789000BEG MOVEAX NUM32MOVEBX 10 除数是32位10 能否视为16位的10 注意 必须把10视为32位数 如果把除数10视为16位 则商用16位放不下 MOVCX 0 动态统计 将要显示的十进制数的位数 高位的0无需显示 但如果32位数是全0则要显示唯一的一位0 因此CX至少为1 LAST MOVEDX 0 被除数64位 高半部分为0DIVEBX 除法结果的余数在EDXPUSHDX 保存余数 余数本来存放在32位的EDX 因为余数 10 因此余数实际上就在DL中 能否使用PUSHDL INCCX 即将显示的位数加1 至少显示1位CMPEAX 0 EAX保存商 注意 除法结束的条件JNZLAST 如果商为0 退出循环 根据堆栈中的余数 逆序显示AGA POPDXADDDL 30H 把每个余数转换成对应的ASCII码MOVAH 2INT21H 逐一显示余数LOOPAGA 循环显示次数就是CX中 十进制数的位数 MOVAH 4CHINT21HCODEENDSENDBEG 思考 源代码中的操作数 是否可以改为其他进制 是否可以改为负数 类似于C语言的自动类型转换 shortinta 3 unsignedshortintb a b 例 把BX中的16位二进制数转换成十进制并显示在屏幕上 寄存器参数传递 STASGSEGMENTDW32DUP STASGENDSCODESEGMENTASSUMECS CODEMAINPROCFARMOVBX 162EHCALLTERNMOVAX 4C00HINT21HMAINENDP TERNPROC 二 十并显示 MOVCX 10000CALLDEC DIV 转换万位数MOVCX 1000CALLDEC DIV 转换千位数MOVCX 100CALLDEC DIV 转换百位数MOVCX 10CALLDEC DIV 转换十位数MOVCX 1CALLDEC DIV 转换个位数RETTERNENDP DEC DIVPROC CX中为十进制的位权MOVAX BXMOVDX 0DIVCX 商为转换后的一位十进制数MOVBX DXMOVDL ALADDDL 30H 转换成ASCII码MOVAH 2 显示INT21HRETDEC DIVENDPCODEENDSENDMAIN 数值计算 例 两个4字节组合BCD码数加法 486DATASEGMENTUSE16XXDD13572468HYYDD55667788HSUMDB 增加一个字节 用于存放进位值00或01DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AX MOVSI OFFSETXXMOVDI OFFSETYYMOVBX OFFSETSUM 4 为什么要加4 低位结果先得 但后显示CLCMOVCX 4BCD ADD MOVAL SI ADCAL DI DAAMOV BX ALINCSIINCDI 指向高地址 高位 DECBXLOOPBCD ADD ADCCL 0MOV BX CL 保存最高位的进位CALLDISPMOVAH 4CHINT21H DISPPROC 显示10位BCD码数的结果 每个存储单元的内容显示2位结果 高 低4位 MOVCX 5MOVBX OFFSETSUMLLL MOVDH BX ROLDX 4 DL低4位为即将处理的一位BCDANDDL 0FH DL高4位清0ADDDL 30HMOVAH 2INT21H 显示一位BCDROLDX 4ANDDL 0FHADDDL 30HMOVAH 2INT21H 显示压缩BCD码的第二位INCBX 指向下一个压缩BCD码LOOPLLL RETDISPENDPCODEENDSENDBEG 例 求解一个正整数的近似平方根 CODESEGMENTUSE16ASSUMECS CODEBEG MOVEAX 77CALLSQRTADDCL 30HMOVAH 2MOVDL CLINT21H 假设平方根只有一位十进制数MOVAH 4CHINT21H SQRTPROCMOVECX 0LAST MOVEDX ECXADDEDX ECXINCEDXSUBEAX EDXJCEXITINCECXJMPLASTEXIT RETSQRTENDPCODEENDSENDBEG 入口参数放在EAX中 出口参数是平方根 放在CX 本来存放在EAX 但是其高16位为0 因为假设是所求的平方根是一位十进制数 数据处理 数据处理涉及的面比较宽 包括字符串处理 表格处理等范畴 数据表由若干表项组成 根据表项的内容可以分为无序表和有序表两种 在无序表中的各个表项的数值排列是无序的 而在有序表中的各个表项的数值按照数值大小依次的有序排列 表格处理涉及到数据查找 插入 删除 排序和数据表转换等操作 查表是最基本的操作 查表的方法包括顺序查表 计算查表和对半搜索等 例 为7位标准ASCII码设置一个奇校验位 解法1 486DATASEGMENTUSE16STRINGDB THEQUICKBROWNFOXJUMPSOVERLAZYDOG COUNTEQU STRINGDATAENDSEXTRASEGMENTUSE16BUFDBCOUNTDUP EXTRAENDS CODESEGMENTUSE16ASSUMECS CODE DS DATA ES EXTRABEG MOVAX DATAMOVDS AXMOVAX EXTRAMOVES AXMOVCX COUNTMOVSI OFFSETSTRINGMOVDI OFFSETBUFCLDLOAD LODSBANDAL AL AL不变 影响状态标志JNPSTOREORAL 80H AL最高位置1 STORE STOSBLOOPLOADMOVAH 4CHINT21HCODEENDSENDBEG 解法2清单 没有为ES设置单独的逻辑段 直接对ES赋值 即 DS与ES重叠 DATASEGMENTUSE16 BUFDBCOUNTDUP DATAENDSCODESEGMENTUSE16 BEG MOVAX DATAMOVDS AXMOVES AX 例 数据查找 无序表 例 内存缓冲区从BUF 1开始存有若干个单字节的有符号数 其个数放在BUF单元 要求找出最大数送到MAX单元 最小数送到MIN单元 486DATASEGMENTUSE16BUFDB8 34 56 1 7FH 88 200 22 80HMAXDB MINDB DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATA BEG MOVAX DATAMOVDS AXMOVCH 0MOVCL BUF 不可合并DECCX 只需要比较 BUF 1次MOVAL BUF 1MOVMAX AL 假设第一个数即是所求MOVMIN ALMOVBX OFFSETBUF 2LAST MOVAL BX CMPAL MAXJGGREAT CMPAL MINJLLESSJMPNEXTGREAT MOVMAX ALJMPNEXTLESS MOVMIN ALNEXT INCBXLOOPLASTMOVAH 4CHINT21HCODEENDSENDBEG 例 逆序显示一个字符串1 要求用户从键盘上输入一个字符个数不超过60的字符串 然后以相反次序显示在屏幕上 DATASEGMENTUSE16MESGDB INPUTYOURSTRING BUFDB60DB DB60DUP DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AX AGAIN MOVAH 9MOVDX OFFSETMESGINT21HMOVAH 0AHMOVDX OFFSETBUFINT21HMOVDL 10MOVAH 2INT21H 换行 MOVCL BUF 1MOVCH 0MOVSI OFFSETBUF 2ADDSI CXDECSI 指向最后一个有效字符LP MOVDL BYTEPTR SI MOVAH 2INT21HDECSILOOPLP MOVAH 4CHINT21HCODEENDSENDBEG 例 逆序显示一个字符串2 递归子程序方式逆序显示字符串DATASEGMENTABCDB ABC123asdf LENEQU ABCDATAENDSSTACK1SEGMENTTEMPDB20DUP STACK1ENDS CODESEGMENTASSUMECS CODE DS DATA SS STACK1START MOVAX DATAMOVDS AXMOVCX LENCALLSUB1 参数为ABC及CXMOVAH 4CHINT21HCODEENDSENDSTART CODE1SEGMENTASSUMECS CODE1SUB1PROCFARPUSHCXDECCXCMPCX 0JENEXTCALLSUB1NEXT MOVSI OFFSETABCADDSI LEN 1SUBSI CXMOVDL DS SI MOVAH 2INT21HPOPCXRETSUB1ENDPCODE1ENDS 例 删除第一个关键字 设NUM单元为数据个数 NUM 1单元开始是一张无序表 请查找数KEY是否在数列中 若是 则从数列中删除 第一个该数 DATASEGMENTUSE16NUMDB9 A1B2C3E45 KEYDB E DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATA ES DATABEG MOVAX DATAMOVDS AXMOVES AX MOVAL KEY 关键字放ALMOVCH 0MOVCL NUM 不能合并MOVDI OFFSETNUM 1 指向第一个字符CLDREPNESCASB 执行搜索JNZEXIT 如果ZF 0 未搜索到关键字 结束 如果ZF 1 则CX 剩余字节数 且DI指向关键字的下一个存储单元MOVSI DIDECDIREPMOVSB 复制剩余子串 完成删除操作DECNUM 剩余字符数减1CALLDISP EXIT MOVAH 4CHINT21HDISPPROCMOVKEY 1 MOVAH 9MOVDX OFFSETNUM 1INT21HRETDISPENDPCODEENDSENDBEG 例 删除所有的关键字1 设NUM单元为数据个数 NUM 1单元开始是一张无序表 查找数组中是否存在数KEY 若是 则从数组中删除 所有的该数 思路1 循环执行 搜索串中关键字 复制剩余子串 486DATASEGMENTUSE16NUMDB13 EA1EB2C3EE45E KEYDB E DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATA ES DATA BEG MOVAX DATAMOVDS AXMOVES AXMOVAL KEYMOVBX 0 统计字符串中关键字个数 以利于显示处理CLDNEXT MOVCH 0MOVCL NUMMOVDI OFFSETNUM 1REPNESCASBJNZEXIT MOVSI DIDECDIREPMOVSBDECNUMDECBX 减法 便于后续显示JMPNEXT 无需确定次数 反复删除关键字EXIT CALLDISP MOVAH 4CHINT21HDISPPROCMOV BX KEY MOVAH 9MOVDX OFFSETNUM 1INT21HRETDISPENDPCODEENDSENDBEG 例 删除所有的关键字2 设NUM单元为数据个数 NUM 1单元开始是一张无序表 查找数组中是否存在数KEY 若是 则从数组中删除 所有的该数 思路1 循环复制剩余子串 低效 思路2 一次遍历 逐个字符判断 如果不是则复制该字符 486DATASEGMENTUSE16NUMDB15 EEA1EB2C3EE45EE KEYDB E DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATA ES DATA BEG MOVAX DATAMOVDS AXMOVES AXLEASI NUM 1 SI指向源字符MOVDI SI DI指向目的字符CLDMOVCH 0MOVCL NUMMOVBX 0 统计字符串中被删除的关键字个数 以利于显示处理 LP LODSB 逐一读入源字符 不是关键字则保存 否则不处理 一次遍历即可 SI自动指向下一个字符CMPAL KEYJENEXTSTOSB 非关键字时 复制 DI自动指向下一个存储位置JMPLP1NEXT 等于关键字 不复制DECNUM 剩余字符数减1DECBX 地址减法 便于后续显示LP1 LOOPLPCALLDISP MOVAH 4CHINT21HDISPPROCMOV BX KEY MOVAH 9MOVDX OFFSETNUM 1INT21HRETDISPENDPCODEENDSENDBEG 例 命令行参数的传递技术 程序使用参数用两种方法 人机对话和命令行 在命令行方式下执行的用户程序可以带有参数 并以回车键表示结束 除了用户程序名之外的字符即命令行参数 从命令名后的第一个空格字符开始 到回车键结束 包括回车键 DOS操作系统将一个可执行文件载入主存时 会自动在用户程序上方即低地址处创建一个包含256个字节的PSP PSP表示程序段前缀的段基址 其中 PSP 80H保存命令行参数的字符的个数 不包括回车键字符 从PSP 81H的存储单元开始存放实际输入的参数字符的ASCII码 包括回车键字符 关键 利用初始的DS值 等于PSP 处理参数 然后才能修改DS DATASEGMENTUSE16BUFDB127DUP ASCII码0显示结果类似于空格DB DATAENDSCODESEGMENTUSE16ASSUMECS CODE DS DATA ES DATABEG MOVCL DS 80H DS PSP段基址MOVCH 0 参数个数存入CXMOVSI 81H 存放参数的起始存储单元地址LAST CMPBYTEPTR SI JNENEXTINCSIDECCXJMPLAST 删除参数中起始的空格 NEXT MOVAX DATAMOVES AXMOVDI OFFSETBUFCLDREPMOVSBCALLDISPMOVAH 4CHINT21H DISPPROCMOVAX DATAMOVDS AXMOVAH 9MOVDX OFFSETBUFINT21HRETDISPENDPCODEENDSENDBEG 例 数据查找 有序表 例 在有序表中用折半查找法 二分法 查找指定元素a 关键字 STACKSGSEGMENTSTACK S DW64DUP ST STACKSGENDSDATASEGMENTBUFDB30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 41H 42H 43H 44H 45H 有序表COUNTEQU BUF 表项数CHARDB 要查找的关键字MARKDW0 查找次数PROMPTDB NOFOUND 未找到 提示信息DATAENDS CODESEGMENTASSUMECS CODE DW DATA SS STACKSGMAINPROCFARMOVAX DATAMOVDS AXMOVAH 1 输入要查找数的字符INT21HMOVCHAR AL 保存要找的数LEASI BUF 表起始地址 初始化 区间下限 左 MOVCX COUNT 数据个数MOVDX SIADDDX CX 最后一个数的地址加1MOVDI DX 初始化 区间上限 右 MOVDX 0 查找次数 初始化为0 CMPAL SI 判断 是否等于下边界JBNOFID 小于最小数 找不到JEFOUND 恰好等于最小数 找到CMPAL DI 1 判断 上边界元素JANOFID 大于最大数 找不到JEFOUND 恰好等于最大数 找到MOVDX 1 统计 查找次数 准备 折半MOVAL CHAR 要查找的数C1 MOVBX SI 准备 折半ADDBX DISHRBX 1 折半 除以2CMPAL BX 比较 关键字与中间元素JZFOUND 恰好等于中间元素 找到PUSHF 保留CMPAL BX 的状态 CMPBX SI 中间指针 下限吗 JZNOFID 是 找不到 查找结束POPF 恢复CMPAL BX 的状态JLLESS 关键字可能在左半区MOVSI BX 关键字可能在右半区 调整下限JMPSHORTNEXTLESS MOVDI BX 左半区 调整上限NEXT INCDX 查找次数加1JMPC1NOFID LEADX PROMPT 显示未找到提示信息MOVAH 9INT21HJMPSHORTEXIT FOUND MOVMARK DX 保存查找次数PUSHDXMOVAH 2 显示找到的数MOVDL BX INT21HMOVCL 10 查找次数不超过99次POPAXDIVCL 把查找次数转换成十进制数ORAX 3030H 转换成ASCII码MOVDL ALPUSHAX MOVAH 2 显示查找次数的高位INT21HPOPAXMOVDL AHMOVAH 2 显示查找次数的低位INT21HEXIT MOVAX 4C00HINT21HMAINENDPCODEENDSENDMAIN 例 查找 有序表 对半查找 从BUF开始的数据区存有一个有序数列 查询其中是否有一个数等于从键盘上输入位于存储单元KEY的数 DISPMACROVARMOVAH 9MOVDX OFFSETVARINT21HENDMDATASEGMENTUSE16BUFDB ABCDEFGHIJKLMNOPQRSTUVWXYZ COUNTEQU BUFKEYDB LASTDWBUFNEXTDWBUF COUNTMESGDB Input OKDB FOUND NODB NOTFOUND DATAENDSCODESEGMENTASSUMECS CODE DS DATABEG MOVAX DATAMOVDS AX DISPMESGMOVAH 1INT21HMOVKEY ALAGAIN MOVBX LASTADDBX NEXTRCRBX 1MOVAL KEYCMPAL BX JEFOUND CMPBX LASTJEFAILCMPAL BX JNCGREATMOVNEXT BXJMPAGAINGREAT MOVLAST BXJMPAGAINFOUND DISPOKJMPEXITFAIL DISPNO EXIT MOVAH 4CHINT21HCODEENDSENDBEG 例 自定义一个按降序排列的字型数组 在数组中查找指定的数字 若找到在屏幕上显示 Duplication 否则插入该数字在适当位置并继续保持数组有序 且显示 Inserted DATASEGMENTPRTDB Duplication INSDB Inserted XDW 为数据移动预留空间TABDW889 754 589 546 52 31 降序数组CTEQU TAB 2 元素个数NDW234 要插入的数字DATAENDS CODESEGMENTMAINPROCFARASSUMECS CODE DS DATAPUSHDSSUBAX AXPUSHAXMOVAX DATAMOVDS AXMOVES AXLEADI TAB 装入表首址MOVAX N 要插入的数字MOVCX CT 个数CLDREPNZSCASWJEA 找到转 MOVSI 0COMPARE CMPTAB SI AX 比较JLB 小于转MOVBX TAB SI 元素前移为插入的数字腾位置MOVTAB SI 2 BXADDSI 2 修改地址指针JMPSHORTCOMPAREA MOVAH 9HLEADX PRTINT21HJMPEXITB MOVTAB SI 2 AX 插入元素 MOVAH 9LEADX INSINT21HEXIT RETMAINENDPCODEENDSENDMAIN 例 排序 例 自定义一个ARY字型数组 元素个数为CT 请编制程序使该数组中的数据按降序排列 起泡排序法流程图 Y 置地址指针 初始化外循环次数 DI 置内循环次数 CX Ai Ai 1 Ai Ai 1 修改地址指针指向下一元素 修改内循环次数CX 1 CX CX 0 Y N N 修改外循环次数DI 1 DI DI 0 N Y 开始 结束 STACKSGSEGMENTSTACK S DW64DUP ST STACKSGENDSDATASEGMENTARYDW5 7 1 4 3 6 9 8 2 数组 流程图中为ACTEQU ARY 2 元素个数DATAENDSCODESEGMENTASSUMECS CODE DS DATA SS STACKSGMAINPROCFARMOVAX DATAMOVDS AX MOVDI CT 1 初始化外循环次数LOP1 MOVCX DI 置内循环次数MOVBX 0 置地址指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论