微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part2_第1页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part2_第2页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part2_第3页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part2_第4页
微机原理与接口技术(第3版)课件 第4章 汇编语言程序设计-part2_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术第4章汇编语言程序设计目录4.1汇编语言基础4.2顺序程序设计4.3分支程序设计4.4循环程序设计4.5DOS系统功能调用4.6子程序设计4.7字符串处理3包含多个段的汇编语言程序最简单的汇编语言程序算术逻辑移位指令移位指令主要内容4.2顺序程序设计4算术逻辑移位指令移位指令最简单的汇编语言程序顺序结构指程序中的每一条指令都是按指令的排列顺序执行的程序4.2-1例4.2-1编程计算以下4个数的和,结果保存在AX寄存器0123H、0456H、0789H、0ABCHCODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND完成4个数相加4.2顺序程序设计5算术逻辑移位指令移位指令最简单的汇编语言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1SEGMENT和ENDS成对使用的一组伪指令作用是定义一个段SEGMENT说明段的开始ENDS说明段的结束。段名SEGMENT……段名ENDS4.2顺序程序设计6算术逻辑移位指令移位指令最简单的汇编语言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1ASSUME伪指令:将“SEGMENT……ENDS”定义的一个段与某个段寄存器进行关联

CODE是代码段4.2顺序程序设计7算术逻辑移位指令移位指令最简单的汇编语言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1END标志着一个汇编语言源程序的结束编译器遇到END伪指令,就停止对源程序的编译。注意ENDS和END的区别4.2顺序程序设计8算术逻辑移位指令移位指令最简单的汇编语言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1程序返回最简单的汇编语言程序:只有1个代码段4.2顺序程序设计9包含多个段的汇编语言程序最简单的汇编语言程序算术逻辑移位指令移位指令顺序程序设计10算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1DATA1DW0123H,0456H,0789H,0ABCH用和定义代码段一样的方法来定义一个数据段然后在数据段里面定义需要的数据。如果以上四个数是存储在以DATA1为起始地址的连续内存单元中,该如何处理呢?到哪里去找这段内存空间?4.2顺序程序设计11算术逻辑移位指令移位指令包含多个段的汇编语言程序例4.2-2计算存储在变量DATA1中的4个字数据0123H,0456H,0789H,0ABCH的和,结果保存在累加器AX中。DATASEGMENTDATA1DW0123H,0456H,0789H,0ABCHDATAENDS数据段程序4.2-24.2顺序程序设计12算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART代码段4.2顺序程序设计13算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART代码段、数据段与相关段寄存器关联4.2顺序程序设计14算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART即源程序中的“MOVAX,DATA”1419H为数据段的段基址指令执行之前,DS的值并不是DATA对应的数据段的段地址1419H,这说明在程序中需要对DS初始化对数据段地址的引用段名就代表段地址注意:没有任何伪指令!伪指令由masm程序负责解释执行。4.2顺序程序设计算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART取变量DATA1的偏移地址就是MOVBX,0000HLEA BX,DATA1即源程序中的“MOVBX,OFFSETDATA1”4.2顺序程序设计16算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTARTSTART处是要执行的第一条指令,即程序的入口地址。END的另一作用就是通知编译器程序的入口在什么地方。程序执行的第一条指令第1条指令的地址4.2顺序程序设计17算术逻辑移位指令移位指令包含多个段的汇编语言程序CODESEGMENTASSUMECS:CODE,DS:DATA

MOVAX,DATAMOVDS,AXSTART:MOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART程序执行的第一条指令这两条指令就不会被执行START处是要执行的第一条指令,即程序的入口地址。END的另一作用就是通知编译器程序的入口在什么地方。4.2顺序程序设计18算术逻辑移位指令移位指令包含多个段的汇编语言程序观察Data段中定义的DATA11419:00001419:00011419:00021419:00031419:00041419:00051419:00061419:00071419:00081419:00091419:000A…230156048907BC0A00000…DATA14.2顺序程序设计19算术逻辑移位指令移位指令包含多个段的汇编语言程序观察程序的分步执行:MOVBX,OFFSETDATA1装入数据段的段基址到DS4.2顺序程序设计20算术逻辑移位指令移位指令包含多个段的汇编语言程序观察程序的分步执行:4.2顺序程序设计21算术逻辑移位指令移位指令包含多个段的汇编语言程序观察程序的分步执行:四个数相加的结果4.2顺序程序设计22算术逻辑移位指令移位指令包含多个段的汇编语言程序例(补充)

已知0~9的平方值连续存储在以SQTAB开始的存储器区域中,求SUR单元内容X的平方值,并放在DIS单元中。

DATA SEGMENT SUR DB 4 DIS DB ? SQTABDB 0,1,4,9,16,25,36,49,64,81DATA ENDSSTACKSEGMENT DB DUP100(?) TOP LABELWORD STACKENDS堆栈段;堆栈段长度为100字节Stack:00HStack:63H堆栈段100BTOP;TOP指示堆栈的栈底4.2顺序程序设计23算术逻辑移位指令移位指令包含多个段的汇编语言程序例(补充)

已知0~9的平方值连续存储在以SQTAB开始的存储器区域中,求SUR单元内容X的平方值,并放在DIS单元中。

CODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVAX,STACKMOVSS,AXMOVSP,OFFSETTOP送SS初值设定栈顶指针Stack:00HStack:63H堆栈段100BTOPSP程序4.2-3空栈的栈顶和栈底重合4.2顺序程序设计24算术逻辑移位指令移位指令包含多个段的汇编语言程序例(补充)

已知0~9的平方值连续存储在以SQTAB开始的存储器区域中,求SUR单元内容X的平方值,并放在DIS单元中。

;查表求平方

LEA BX,SQTAB

MOV AL,SUR

MOV AH,0 ADD BX,AX MOV AL,[BX] MOV DIS,AL MOV AX,4C00H INT 21H …….XLAT…0149162536496481…SQTABBXBX=BX+AXAL=SUR=4AL16DIS16AX=0004H可用“MOVBX,OFFSETSQTAB”4.2顺序程序设计目录4.1汇编语言基础4.2顺序程序设计4.3分支程序设计4.4循环程序设计4.5DOS系统功能调用4.6子程序设计4.7字符串处理26算术逻辑移位指令移位指令常见分支结构单分支结构双分支结构多分支结构条件分支1分支2YN条件ii=1分支n分支1分支2i=2i=n……条件分支YN4.3分支程序设计27分支程序举例转移指令算术逻辑移位指令移位指令主要内容4.3分支程序设计28算术逻辑移位指令移位指令转移类指令8086/8088CPU的转移行为(从转移的距离):段间转移同时修改CS和IP段内转移只修改IP短转移IP修改范围−128~127字节近转移−32768~32767字节8086/8088CPU的转移行为(是否带条件):无条件有条件4.3分支程序设计29算术逻辑移位指令移位指令无条件转移指令JMP

类型方式寻址目标指令举例段内转移段间转移直接立即短转移(8位)JMPSHORTS直接立即近转移(16位)JMPNEARPTRN间接寄存器(16位)JMPBX间接存储器(16位)JMPWORDPTR[BX+5]直接立即转移(32位)JMPFARPTRF间接存储器(32位)JMPDWORDPTR[DI]

4.3分支程序设计30算术逻辑移位指令移位指令无条件转移指令JMP格式:JMPshort

标号段内短转移功能:“short”说明进行的是短转移,“标号”指明了要转

移的目的地。段内短转移,对IP的修改范围是-128~127字节

IP←IP+8位位移补码表示4.3分支程序设计31算术逻辑移位指令移位指令无条件转移指令JMPCODESEGMENTASSUMECS:CODESTART:MOVAX,8

JMPSHORTS INCAXS:ADDAX,1

CODEENDSENDSTART程序4.3-18位位移=标号处的地址-JMP指令后的第一个字节的地址;4.3分支程序设计32算术逻辑移位指令移位指令无条件转移指令JMP不理解计算原理没关系,会用就行

JMPSHORTSINCAXS:ADDAX,18位位移=0006H-0005H=1该指令执行后IP=0005H+1=0006H01H是偏移量DEBUG调试结果:4.3分支程序设计33算术逻辑移位指令移位指令无条件转移指令JMP格式:JMPNEARPTR标号段内近转移功能:IP←IP+16位位移。段内近转移,对IP的修改范围是−32768~32767字节16位位移=标号处的地址−JMP指令后的第一个字节的地址;4.3分支程序设计34格式:JMPFARPTR标号段间远(直接)转移功能:CS←标号所在段的段地址;IP←标号在段中的偏移地址JMPFARPTRPROG_F例:执行后IP=080AH,CS=3500H,程序转移到3500:080AH处执行设标号PROG_F所在段的基地址=3500H,偏移地址=080AH算术逻辑移位指令移位指令无条件转移指令JMP4.3分支程序设计35算术逻辑移位指令移位指令无条件转移指令JMP格式:JMPWORDPTR内存单元地址段内间接转移功能:内存单元地址处存放一个字,以其作为目的偏移地址,实现段内转移。JMP

WORDPTR[BX]例:执行后IP=0123HMOV

AX,0123HMOV

[BX],AX3.1节的后5种寻址方式

…←BX23H01HIP常用于构造跳转表,实现多分支结构程序(见教材例4.3-4)4.3分支程序设计36算术逻辑移位指令移位指令无条件转移指令JMP4.3分支程序设计格式:JMPDWORDPTR内存单元地址段间间接转移功能:在内存单元地址处存放两个字,以其作为目的段地址和偏移地址,实现段间转移。JMP

DWORDPTR[BX]例:执行后IP=1512H,CS=0123HMOVWORDPTR[BX],1512HMOVWORDPTR[BX+2],0123H3.1节的后5种寻址方式

←BX12H15HIP23H01HCS←BX+237算术逻辑移位指令移位指令条件转移指令:分支转移到标号处标志条件真假:立即执行紧跟在条件转移指令之后的指令

JCond

标号条件转移指令都是短转移寻址方式是位移量为8位的相对寻址方式。IP的修改范围是-128~127if(Cond)JMPshort标号4.3分支程序设计38算术逻辑移位指令移位指令条件转移指令指令条件说明测试标志JZ结果为零ZF=1JNZ结果不为零ZF=0JS结果为负SF=1JNS结果为正SF=0JP/JPE结果中1的个数为偶数PF=1JNP/JNPE结果中1的个数为奇数PF=0JO结果溢出OF=1JNO结果无溢出OF=0JC有进位CF=1JNC无进位CF=0P17标志寄存器基于特定标志值4.3分支程序设计39算术逻辑移位指令移位指令条件转移指令基于特定标志值举例说明功能:当ZF=1时,IP←IP+8位位移。当ZF≠1时,什么也不做,程序向下执行。if(ZF==1)JMPshort标号格式:JZ

标号 CMPAL,0

JZ Zero ;ZF=1跳转 MOVBL,1 ;ZF=0执行此语句

Zero:4.3分支程序设计40算术逻辑移位指令移位指令条件转移指令基于恒等性比较指令条件说明JE相等则跳转JNE不相等则跳转JCXZCX=0则跳转等价于JZ等价于JNZ4.3分支程序设计41算术逻辑移位指令移位指令条件转移指令基于无符号数比较的跳转指令指令条件说明JB/JNAE结果低于/不高于或等于JNB/JAE结果不低于/高于或等于JBE/JNA结果低于等于/不高于JNBE/JA结果不低于不等于/高于B-BelowA-AboveE-Equal基于有号数比较的跳转指令指令条件说明JL/JNGE小于/不大等于JNL/JGE不小于/大等于JLE/JNG小等于/不大于JNLE/JG不小等于/大于L-LessG-GreaterE-Equal4.3分支程序设计42算术逻辑移位指令移位指令条件转移指令例4.3-1阅读下面程序段,说明程序段执行后转移到哪里?MOVAL,7FHCMPAL,80HJAIsAbove

JGIsGreater;127或者+127;128或者−128;不跳转,因为127不高于128;跳转,因为+127大于−128无符号有符号4.3分支程序设计43分支程序举例转移指令算术逻辑移位指令移位指令主要内容4.3分支程序设计44算术逻辑移位指令移位指令单分支结构DATASEGMENTXDW3456HDATAENDS;数据段定义变量X存放数例4.3-2求某整数X的绝对值,并送回原处,即X=X,X>=0

X,X<0程序4.3-2分析:知道X的正负获取X的符号位

SF=?

JS/JNS4.3分支程序设计45算术逻辑移位指令移位指令单分支结构例4.3-2求某整数X的绝对值,并送回原处,即X=X,X>=0

X,X<0

……MOVAX,XANDAX,AXJNSENDIFNEGAXMOVX,AXENDIF:…………;与运算后取SF;如果SF=0,X为正数,不作处理;如果SF=1,X为负数,对X求负MOV指令不影响标志位因此用AND指令获得AX的符号位思考:除了AND指令,是否有其他指令能实现相同目的(不改变操作数的值,只影响标志位)?思考:不改变操作数的值,只影响标志位4.3分支程序设计46算术逻辑移位指令移位指令双分支结构例4.3-3试编写程序段,判断一个非零符号数的正负。程序4.3-3START:…… MOVAL,X ORAL,AL JNSPLUS;X为正数,则转PLUS MOVBL,0FFH;X为负数,则-1送BL JMPENDIFPLUS:MOVBL,1ENDIF:……MOV指令不影响标志位,OR指令影响相关标志位,如SF,ZF等思考:JMP指令的作用是什么?如果少了该指令,会出现什么问题?4.3分支程序设计47算术逻辑移位指令移位指令多分支结构例4.3-4若有一组选项,当N选择不同值时,做相应处理。该组选择项及其对应的处理为:N=1时,显示信息(DISPL);N=2时,传送信息(TRAN);N=3时,处理信息(PROCE)N=4时,打印信息(PRINT)N=5时,结束程序(EXIT)假设N的值由键盘输入。4.3分支程序设计48算术逻辑移位指令移位指令多分支结构DATA SEGMENT……DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXDO: MOV AH,01H ;从键盘接收收用户输入的数字选项

INT 21H SUB AL,30H ;将数字选项的ASCII码转换为数字

CMP AL,01 JE DISPL

方法1

:多次使用比较指令构成分支程序4.3-44.3分支程序设计49算术逻辑移位指令移位指令多分支结构方法1

:多次使用比较指令构成分支程序4.3-44.3分支程序设计

CMP AL,02 JE TRAN CMP AL,03 JE PROCE CMP AL,04 JE PRIN CMP AL,05 JE EXIT JMP DO ;输入的不是'1'~'5'则接收下一个输入字符DISPL: ...... JMP DOTRAN: .....

JMP DOPROCE:..... JMP DOPRIN: ..... JMP DOEXIT: .....思考:多次使用比较指令构成多分支结构的程序设计,缺点是什么50算术逻辑移位指令移位指令多分支结构跳转表中存放了每个分支程序的入口地址。分支入口地址在表中的地址=跳转表首地址+偏移地址DATA SEGMENT;偏移地址JADTDWDISPL ;

00H DWTRAN ;02H DWPROCE ;04H DWPRIN ;06H DWEXIT ;08HDATA ENDS输入的编号12345对应关系2×(1−1)2×(2−1)2×(3−1)2×(4−1)2×(5−1)偏移地址=2×(编号−1)跳转表“JMPJADT[偏移地址]”可实现跳转方法2

:跳转表法=2×编号−24.3分支程序设计4.3分支程序设计51算术逻辑移位指令多分支结构DATA SEGMENTJADTDWDISPL ;跳转表00H DWTRAN ;02H DWPROCE ;04H DWPRIN ;06H DWEXIT ;08HDATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXDO: MOV AH,01

INT 21H SUB AL,30H CMP AL,01 JB DO CMP AL,05

JA DO SHL AL,1 ;AL*2

MOVAH,0

;AH←0

MOV DI,AX JMP JADT[DI-2]DISPL:…… JMPDOTRAN: …… JMPDOPROCE: ...... JMPDOPRIN:…… JMPDOEXIT: MOVAH,4CH INT21HCODE ENDS ENDSTART从键盘接收输入的数字字符,其ASCII码存入AL(详见4.5节)ASCII码转换成数值程序4.3-52N-2目录4.1汇编语言基础4.2顺序程序设计4.3分支程序设计4.4循环程序设计4.5DOS系统功能调用4.6子程序设计4.7字符串处理53算术逻辑移位指令移位指令主要内容4.4循环程序设计循环程序的基本结构循环指令循环程序举例循环程序的一般结构为循环做准备,包括设定循环体部分用到的变量或寄存器的初始值,设置循环次数等循环程序的核心。重复操作就位于循环体内出口部分的作用是判断循环是否结束或者继续开始初始化部分循环体出口判定Y结束N4.4循环程序设计循环程序的一般结构程序4.2-2例4.4-1利用4.3节所学的条件转移指令,把4个数累加求和的程序4.2-2改写成循环结构的形式。CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]

重复4次程序4.4-1

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTART初始化部分循环体出口判定思考:JNZ还可以替换为哪些指令?4.4循环程序设计DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTART循环程序的一般结构初始化部分DATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=04.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0循环体4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0123H循环体4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0123H循环体4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H循环体4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H出口判定ZF=0,即上一步计算DECCX的结果不为04.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H+4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0579H+4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0579H4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…CX=2AX=0579HBX4.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;设置循环次数AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…CX=0AX=17BEHBXZF=1,即上一步计算DECCX的结果为04.4循环程序设计循环程序的一般结构DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA

温馨提示

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

评论

0/150

提交评论