




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例如,设计一个256分支的段内程序转移程序。 设JUMP单元有一个数X,若X0,则转移到标号为P000的程序段;若X1,则转移到标号为P001的程序段,;若X255,则转移到标号为P255的程序段。DATA SEGMENT JUMP DB ? ; 某数X TAB DW P000; 分支程序标号 DW P001 DW P255 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATABEG: MOV AX, DATA MOV DS, AX MOV BL, JUMP MOV BH, 0 ADD BX, BX ; 2XBX寄存器 MOV SI, OFFSET TAB JMP BX+SI ; DS:BX+SIIP实现转移 P000: . . P001: . . . . . P255: . . CODE ENDS END BEG例4.2 字节型变量VAR1、VAR2和VAR3存放有3个无符号数,将其中的内容按从大到小重新排列。 解:经重新排列后,VAR1的值最大,VAR3的值最 小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。编程思路:通过在三个数中找出最大值,将它与VAR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在VAR2中。汇编语言程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTVAR1DB 46H ;先假设一组值,以便检验程序设计的正确性VAR2DB 15HVAR3DB 0A2HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP MOV AL,VAR1;用户编写的程序 CMP AL,VAR2 JAE NO_CHG1 XCHG AL,VAR2NO_CHG1: CMP AL,VAR3 JAE NO_CHG2 XCHG AL,VAR3NO_CHG2: MOV VAR1,AL;最大值保存到VAR1 MOV AL,VAR2 CMP AL,VAR3 JAE NO_CHG3 XCHG AL,VAR3 MOV VAR2,AL;次大值保存到VAR2NO_CHG3: MOV AH,4CH;返回DOS操作系统 INT 21HCODE ENDS END START程序执行后,(VAR1)0A2H,(VAR2)46H,(VAR3)15H,说明程序设计正确。一般来说,在程序结束处,应该使之返回到DOS状态,以便进行其它操作。 当要排序的数据为有符号数时,只需要将程序中相应的JAE指令改成JGE指令。例43 有一组测试数据(有符号数),每个数据占用16位二进制数,数据个数存放在缓冲区的前2个字节,现要求分别统计出大于0、等于0和小于0的个数,分别存放在GREATZ、ZERO、LITTLEZ单元中。解:有符号数的比较应该采用JG、JGE、JL、JLE等指令,同时还应该注意,MOV指令不会影响PSW中的标志位。编程思路:将字单元GREATZ、ZERO、LITTLEZ用作为计数器,其初值均为0。然后对数据与“0”比较,当其大于0时,GREATZ单元加1;当其等于0时,ZERO单元加1;当其小于0时,LITTLEZ单元加1。程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER DW 500 ;假设有500个数据,并利用重复宏随机 X=17 产生 REPT 500 X=(X+979) mod 65535 DW X ENDMGREATZ DW ?ZERO DW ?LITTLEZ DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP XOR AX,AX ;用户编写的程序 MOV GREATZ,AX MOV ZERO,AX MOV LITTLEZ,AX MOV CX,BUFFER LEA SI,BUFFER+2ST_COUNT:MOV AX,SIADD SI,2AND AX,AXJLE COUNT1INC GREATZJMP COUNT3COUNT1:JL COUNT2INC ZEROJMP COUNT3COUNT2:INC LITTLEZCOUNT3: DEC CX JNZ ST_COUNT MOV AH,4CH ;返回DOS操作系统 INT 21HCODE ENDS END START搬家程序的控制是以变化的数据个数作为条件。程序如下: MOV AX, 1000H MOV DS, AX MOV BX, 1000H MOV DI, 1500H MOV CX, 100 LOOP: MOV AL, BX MOV DI, AL INC BX INC BX DEC CX JNZ LOOP HLT 下面再举一个例子说明循环结构程序设计的方法。 假设从BUF单元开始为一个ASCII码字符串, 找出其中的最大数送屏幕显示。 程序流程图如图 4 - 4 所示。程序如下: DATA SEGMENT BUF DB ABCREF873 COUNT EQU $-BUF ; 统计串长度 MAX DB MAX, ?/ODH, OAH, $ DATA-ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA BEG: MOV AX, DATA MOV DS, AXMOV AL, 0 ; 无符号最小数0AL LEA BX, BUF ; 串首址偏移量BX MOV CX, COUNT ; 串长度CXLAST: CMP BX, AL ; 比较 JC NEXT MOV AL, BX ; 大数AL NEXT: INC BX LOOP LAST ; 循环计数NEXT :INC BX LOOP LAST ; 循环计数 MOV MAX+4, AL ; 最大数MAX+4单元 MOV AH, 9 MOV DX, OFFSET MAX INT 21H ; 显示结果 MOV AH, 4CH INT 21H ; 返回DOS CODEENDS END BEG在上述程序中,ASCII应看成无符号数,无符号数的最小值为0, 因此,在进行第一次比较时,把0送AL寄存器, 各个数都和AL比较,每次比较后的较大的数放入AL寄存器中,N个数需要比较N次,若把第一个数送AL作为初始比较对象,那么N个数需要比较N-1次。下面举例说明如何进行双重循环的程序设计假设需要对无序表中的元素排序,冒泡排序是最常用的一种方法。 设从地址ARRAY开始的内存缓冲区中有一个字数组, 要使该数据表中的N个元素按照从大到小的次序排列,用冒泡算法显示的过程叙述如下: 从第一个数开始依次进行相邻两个数的比较, 即第一个数与第二个数比较, 第二个数与第三个数比较 ,比较时若两个数的次序符合排序要求,则不做任何操作;若次序不对,就交换这两个数的位置。经过这样一遍全表扫描比较后,最大的数放到了表中第N个元素的位置上。在第一遍扫描中进行N-1次比较。用同样的方法再进行第二次扫描, 这时只需考虑N-1个数之间的N-2次比较,扫描完毕,最大的数放到了表中第N-1个元素的位置上 依此类推,在进行了N-1遍的扫描比较后将完成排序。 下面是对有7个元素的次序表进行冒泡排序的过程。 表的初始状态: 43 36 65 95 81 12 25 第一遍扫描比较之后: 36 43 65 81 12 25 95 第二遍扫描比较之后: 36 43 65 12 25 81 95 第三遍扫描比较之后: 36 43 12 25 65 81 95 第四遍扫描比较之后: 36 12 25 43 65 81 95 第五遍扫描比较之后: 12 2536 43 65 81 95 第六遍扫描比较之后: 12 25 36 43 65 81 95 冒泡法最大可能的扫描遍数为N-1。 但是, 往往有的数据表在第1遍(1N-1)扫描后可能已经成序。为了避免后面不必要的扫描比较,可在程序中引入一个交换标志若在某一遍扫描比较中,一次交换也未发生,则表示数据已按序排列,在这遍扫描结束时,就停止程序循环,结束排序过程。 程序如下: DATA SEGMENT ARRAY DW d1, d2, d3, . , dn COUNT EQU(-ARRAY)2 ; 数据个数 FLAG DB-1 ; 交换标志, 初值为-1 DATA ENDS STACK SEGMENT PARA STACK STACK DB 1024 DUP(?) STACK ENDS CODE SEGMENTSORT: MOV AX, DATA MOV DS, AX MOV BX, COUNT LP1: CMP FLAG, 0 ; 数组已有序? JE EXIT ; 是, 排序结束 DEC BX ; 否, 置本遍扫描比较次数 MOV CX, BX MOV SI, 0 ; 置数组的偏移地址 MOV FLAG, 0 ; 预置交换标志为0LP2: MOV AX, ARRAYSI ; 取一个数据AX CMP AX, ARRAYSI2 ;与下一个数比较 JLE NEXT ; 后一个数大, 转NEXT XCHG AX, ARRAYSI+2 ; 逆序, 交换两个数 MOV ARRAYSI, AX MOV FLAG, -1 ; 置交换标志为-1 NEXT:ADD SI, 2 ; 修改地址指针LOOP LP2 ; 循环进行两两数据的比较 JMP LP1 ; 内循环结束, 继续下一轮排序EXIT: MOV AH, 4CH ; 排序完成, 返回DOS INT 21H CODE ENDS END SORT循环程序设计技术例44 在SOURCE存储区中保存有500个字节数据,现在要求将数据中的0FFH值去掉,并传送到DESTINATION缓冲区中,其有效数据个数保存在NUMBER中。解:将SI指向源操作数区域,DI指向目的操作数区域,每次传送一个字节,但在传送前对其内容进行检测,如果为0FFH,则不传送。在传送的同时要使有效数据个数的计数单元NUMBER进行加1。汇编语言程序如下:N=500STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTSOURCE LABEL BYTE;假设有500个数据,并利用重复 X=17 ;宏随机产生 REPT 500 X=(X+97) mod 256 DB X ENDMDESTINATIONDB N DUP(?)NUMBERDW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX LEA SP,TOP XOR AX,AX;用户编写的程序 MOV NUMBER,AX MOV CX,N LEA SI,SOURCE LEA DI,DESTINATIONMOVE1:MOV AL,SIINC SICMP AL,0FFHJZ MOVE2MOV DI,ALINC DIINC NUMBERMOVE2:LOOP MOVE1MOVE_END:MOV AH,4CH;返回DOS操作系统INT 21HCODE ENDS END START例45 在缓冲区DATABUF中保存有一组无符号数据(8位),其数据个数存放在DATABUF的第1、2个字节中,要求编写程序将数据按递增顺序排列。解:这里采用双重循环实现数据的排序,这可使程序变得简单。要对N个数据进行从小到大排序时,可以采用“冒泡法”:从后往前,每两个数据进行比较,当前者大于后者时,交换两者的次序;否则不变,这样,经过N-1次比较,可以将最小值交换到第一个单元(最轻的气泡最先冒出水面)。接着对后N-1个数据,重复上述过程,使次小值交换到第二个单元;依此类推,共进行N-1次比较过程,可以完成数据的排序操作。 由于每次比较操作都在相邻两个单元进行,因此只需要一个指针。汇编语言程序如下: N=100;设有100个数据STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDATABUF DW N DB N DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP ;为了能够进行排序,DATABUF 中必须已经保存数据, ;因此我们产生一组随机数据 MOV CX,DATABUF LEA SI,DATABUF+2 MOV BL,23 MOV AL,11 LP: MOV SI,AL INC SI ADD AL,BL LOOP LP; 下面给出数据排序程序 MOV CX,DATABUF DEC CX ;外循环次数 LEA SI,DATABUF2;SI指向数据区首地址 ADD SI,CX;SI指向数据区末地址LP1:;外循环开始 PUSH CX PUSH SILP2: ;内循环开始,其循环次数恰好 ;与外循环的CX值一致 MOV AL,SI CMP AL,SI-1 JAE NOXCHG XCHG AL,SI-1;交换操作 MOV SI,ALNOXCHG: DEC SI LOOP LP2 POP SI POP CX LOOP LP1;数据排序结束MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START如果要求将数据从大到小排序,则只需要将交换条件指令“JAE NOXCHG”改成“JBE NOXCHG”;如果要排序的数据为有符号数,则只需要将交换条件指令“JAE NOXCHG”改成“JGE NOXCHG”。例46 有一组数据(16位二进制数)存放在缓冲区BUF中, 数据个数保存在BUF的前两个字节中。要求编写程序实现在缓冲区中查找某一数据(16位),如果缓冲区中没有该数据,则将它插入到缓冲区的最后;如果缓冲区中有多个被查找的数据,则只保留第一个,将其余的删除。解:在缓冲区BUF中搜索指定的数据,当没有找到该数据时,在最后插入该数据;当找到该数据时,则进入搜索多余的重复数据,每次找到该数据就删除它(即将缓冲区的剩余数据向前移动一个字)。当然还应该更新缓冲区的长度单元。 要删除数据时,可以采用例4.4的方法,开辟另一个存储区域,并且删除后还需要将数据传送回原来的存储区域。 我们还可以巧妙的利用指针,在同一个区域中实现删除功能。在例4.4的方法中,让目的操作数指针DI也指向源操作数区域,如图4.3所示,这样,每次的写操作可以写回到原来的存储区域,一开始SI与DI指针指向同一个地址,当找到需要删除的单元时,由于只有读操作,没有写操作,使DI指针落后于SI,从而完成将后续单元的内容向前移动的操作。汇编语言程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUF DW 20; 设缓冲区原有20个字DW 1000H,0025H,6730H,6758H,7344H,2023H,0025H,6745H, 10A7H,0B612HDW 56AAH,15ACH,5789H,56AAH,6666H,7777H,56AAH,8888H,9999H,1111H DW 10 DUP(?);为可能的插入操作留出空间NEW DW 56AAH;指定的数据为(NEW)56AAHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AXMOV AX,STACK MOV SS,AX LEA SP,TOP;搜索指定的数据 MOV CX,BUF LEA SI,BUF+2 MOV AX,NEWL1: CMP AX,SI JZ L2 INC SI INC SI LOOP L1;没有找到,则插入数据MOV SI,AXINC BUFJMP OK;结束L2: ;找到第一个数据,在剩余部分搜索并进行删除操作DEC CXINC SIINC SIMOV DI,SI;DI与SI指向剩余区域的首地址L3:MOV BX,SI;读数据INC SIINC SICMP AX,BX;比较JZ L4MOV DI,BX;写数据INC DIINC DIJMP L5L4:DEC BUF ;更新长度计数器L5:LOOP L3OK: MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START例47 在缓冲区DAT1和DAT2中,存放着两组递增有序的8位二进制无符号数,其中前两个字节保存数组的长度,要求编程实现将它们合并成一组递增有序的数组DAT,DAT的前两个字节用于保存新数组的长度。解:这里要用到3个指针,对于将数据写入数组DAT的指针首选使用DI,从DAT1和DAT2读数据的两个指针可分别采用SI和BX,并结合使用字符串指令,可以简化程序的设计。 在程序设计中,将由BX指示的缓冲区DAT2中的内容读入AL,这样,当需要将DAT1的内容传送到DAT时,可直接采用MOVSB指令;当需要将DAT2的内容传送到DAT时,可直接采用STOSB指令。汇编语言程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDAT1 DW 10;设DAT1中有10个数据 DB 10H,25H,67H,68H,73H,83H,95H,0A8H,0C2H,0E6HDAT2 DW 13;设DAT2中有13个数据 DB 05,12H,26H,45H,58H,65H,67H,70H,76H,88H,92H,0CDH,0DEHDAT DW ? DB 200 DUP(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV CX,DAT1;CX表示DAT1的数据个数 MOV DX,DAT2;DX表示DAT2的数据个数 MOV DAT,CX;先计算出DAT的数据个数ADD DAT,DXLEA SI,DAT1+2;SI指向DAT1的数据区LEA BX,DAT2+2;BX指向DAT2的数据区LEA DI,DAT+2;DI指向DAT的数据区CLDL1:MOV AL,BXINC BXL2:CMP AL,SIJB L3MOVSB;DAT1区中的一个数据传送到DAT区DEC CXJZ L4JMP L2L3:STOSB;DAT2区中的一个数据传送到DAT区DEC DXJZ L5JMP L1L4:MOV SI,BXDEC SIMOV CX,DXL5:REP MOVSB;将DAT1或DAT2中剩余部分全部 传送到DAT区 MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START例48 已知缓冲区BUFA内有20个互不相等的整数(其序号从0到19),缓冲区BUFB内有30个互不相等的整数(其序号从0到29)。编写程序完成:将既在BUFA中出现又在BUFB中出现的整数(设为x)存放在缓冲区BUFC中,并将x在BUFA和BUFB中的序号分别存放于缓冲区BUFCA和BUFCB中。解:这里涉及到5个存储区域,最好有5个指针,但BUFC、BUFCA和BUFCB为同步操作,即当找到x时,需要同时对BUFC、BUFCA和BUFCB进行操作,而且每个区域都写入一个字节,因此它们可以采用同一个指针,寻址方式为寄存器相对寻址,即设AL为找到的值,DL、BL为序号,则其操作为:MOV BUFCDI,ALMOV BUFCADI,DLMOV BUFCBDI,BL 对序号的处理也应仔细设计,采用寄存器相对寻址时,例如 MOV AL,BUFASI,其中SI即为序号。汇编语言程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDS N1=20 N2=30DATA SEGMENTBUFA DB 10H,25H,67H,26H,68H,73H,83H,58H,0,06H,12H,0CDH,95H DB 0A8H,0C2H,48H,0E6H,0F1H,1AH,0F5HBUFB DB 05,12H,26H,45H,53H,60H,6AH,7FH,76H,88H,92H,0C1H,0DEH,0E1H,0F5H DB 09,17H,23H,48H,58H,65H,67H,70H,7CH,82H,96H,0CDH,0D1H,0F1H,0FEHBUFC DB 20 DUP(?)BUFCA DB 20 DUP(?)BUFCB DB 20 DUP(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP;以BUFA为外循环,每个字节与BUFB的所有字节比较(构成内循环),;以确定是否存在相同的值MOV CX,N1 XOR SI,SI XOR DI,DIL1:MOV AL,BUFASIPUSH CXMOV CX,N2XOR BX,BXL2:CMP AL,BUFBBXJZ L3INC BXLOOP L2JMP L4;找到相同的值后,进行值传送和序号保存L3:MOV BUFCDI,ALMOV DX,SIMOV BUFCADI,DLMOV BUFCBDI,BLINC DIL4:POP CXINC SILOOP L1 MOV AH,4CH ;返回DOS MOV AL,0 INT 21HCODE ENDS END START一:主程序与子程序之间的参数传递 在设计子程序时,需要从主程序获取数据,这种数据称为入口参数,同时子程序执行后可能有结果数据要送给主程序,这种数据称为出口参数。主程序与子程序之间对入口参数和出口参数的传递有三种方式:(一)寄存器参数传递方式(二)存储单元参数传递方式(三)堆栈参数传递方式 例如:一个延时子程序,其过程可定义如下: SOFTDLY PROC PUSH BX PUSH CX MOV BL,10 DELAY:MOV CX,2801 WAIT: LOOP WAIT DEC BL JNZ DELAY POP CX POP BX RET SOFTDLY ENDP 例:设置系统日期的子程序SETTIME。 功能:将变量YEAR、MONTH、DAY的内容作为时间设置系统日期。 SETTIME PROC NEAR MOV AH,2BH ;置功能号 MOV CX,YEAR ;置年参数(字) MOV DH,MONTH ;置月参数(字节) MOV DL,DAY ; 置日参数(字节) INT 21H ORAL,AL ;检查状态 JNZ ERROR ;日期无效转 RET ERROR: RET YEAR DW 0 MONTH DB 0 DAY DBSETTIME ENDP 设计的子程序(SETEVEN)用于对BUFFER中的字符ASCII码加上偶检验位,其入口参数为:DI(缓冲区首地址,默认为DS段),(CX)缓冲区长度;出口参数:无(实际上是缓冲区的内容);用到的寄存器:无。汇编语言程序如下:STACK SEGMENT STACK STACK DW 100H DUP(?)TOP LABEL WORDSTACK ENDS N=22DATA SEGMENTBUFFER DB xidian university 2006DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV CX,N LEA DI,BUFFER CALL SETEVEN MOV AH,4CH ;返回DOS MOV AL,0 INT 21HSETEVEN PROC NEAR;加上偶校验子程序 PUSH AX PUSH BX PUSH CX PUSH DISETEVEN1: MOV AL,DI CALL COUNTBYTE AND BL,01H;测试“1”的个数是否为偶数 JZ SETEVEN2 OR AL,80H;最高位置入“1” MOV DI,ALSETEVEN2:INC DILOOP SETEVEN1POP DIPOP CXPOP BXPOP AXRETSETEVENENDPCOUNTBYTE PROC NEAR;子程序:统计一个字 节内容中“1”的个数 PUSH AXPUSH CXMOV CX,8XOR BL,BLCOU1: SHR AL,1 ADC BL,0 LOOP COU1 POP CX POP AX RETCOUNTBYTE ENDPCODE ENDS END START 这里调用了统计一个字节内容中“1”的个数的子程序COUNTBYTE,其入口参数为AL,出口参数为BL,子程序用到的寄存器为BL。 例4.10 编写子程序TRANS16TO10,将16位二进制数(AX)转换成十进制数,并保存在指定的缓冲区中。解:16位二进制数x至多可以用5位十进制数进行表示,其转换算法和步骤为:将x除以10得到商x1和余数y1,其中y1就是转换结果的最 低位(个位);将x1再除以10得到商x2和余数y2,其中y2就是转换结果的十位;依次类推,得到y3、 y4和y5,分别为转换结果第三五位。可以肯定,x5=0,y5位为转换结果的最高位。设计的子程序TRANS16TO10,其入口参数:AX(待转换的数据),DI(转换结果存储区域首地址),出口参数:存储区域的内容。 汇编语言子程序如下:TRANS16TO10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV BX,10 MOV CX,5TRANS1: XOR DX,DX DIV BX MOV DI,DL INC DI LOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDP例4.11 编写子程序DISPAXD,将16位二进制数(AX)转换成十进制数,并在显示在屏幕上。解:利用上例将AX转换成5个十进制数位,然后利用INT 21H的02号功能进行显示,这时需要将十进制的数位变换成相应的ASCII码。设计出的子程序DISPAXD,其入口参数:AX,出口参数:屏幕显示,这里要用到一个5字节的临时存储单元,用于存放十进制的数位。汇编语言程序如下:STACK SEGMENT STACK STACKDW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDECIMAL DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACK MOV SS,AX LEA SP,TOP MOV AX,23456 CALL DISPAXD MOV AH,4CH ;返回DOS操作系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校电视家管理制度
- 学校课程与管理制度
- 安全与环保管理制度
- 安吉县物业管理制度
- 完美代理商管理制度
- 定量给料机管理制度
- 实训室用品管理制度
- 客户签收单管理制度
- 家具厂员工管理制度
- 家族工厂不管理制度
- 2025年江苏高考政治试卷真题解读及答案讲解课件
- 2025年行政能力测验考试真题及答案
- 2025上半年山东高速集团有限公司社会招聘211人笔试参考题库附带答案详解析集合
- 2024年宁夏中卫沙坡头区招聘社区专职工作者真题
- 辽宁省点石联考2024-2025学年高二下学期6月份联合考试化学试题(含答案)
- 2025年江苏省南京市中考物理模拟练习卷(含答案)
- 人教部编版三年级下册语文各单元【习作范文】
- 2025高考全国一卷语文真题
- 教师普法考试题及答案
- 水冷空调项目可行性研究报告
- 2025年小产权房的买卖合同5篇
评论
0/150
提交评论