




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、例 编写程序,计算756l 23 解:该除法运算过程表示如下:(注:75以BCD码的形式存放) 第一个商为1 1 2 第二个商为2 6 7 5 6 - 第一个余数为1 1 5 1 2 - 3 第二个余数为3 程序如下: FIRST DB 06H ;除数6 SECOND DB 75H ;被除数75H THIRD DB 2 DUP(0) ;存商 FOUR DB ? ;存余数 MOV AH,00H ;第一个被除数高位AH清0 MOV AL,SECOND ;AL 被除数75 AND AL,0F0H ;截取高4位 MOV CL,04H ROL AL,CL ;移至低4位 DIV FIRST ;AX/06,即000706; ;得结果:AL 商为1,AH余数1 MOV THIRD+1,AL ;结果单元第一个商1 MOV AL,SECOND ;AL 被除数75 AND AL,0FH ;AL 截低4位,故AX0105H AAD ;将AX中内容0105H调整为0FH DIV FIRST ;0FH/6,结果:AL 商为2,AH 余数3 MOV THIRD,AL ;THIRD单元第二个商2 MOV FOUR,AH ;FOUR单元第二个余数3 2、 例 设AL寄存器中存有报警标志。若D71,表示温度报警,程序 要转到温度报警处理程序T_ ALARM;D61,则转压力报警程序 P_ALARM。用TEST指令来实现这种功能。 解:TEST AL,80H ;查AL的D71? JNZ T_ALARM ;是1(非零),则转温度报警程序 TEST AL,40H ;D70,D61? JNZ P_ALARM ;是1,转压力报警 (其中:JNZ为条件转移指令,表示结果非0 (ZF1)则转移) 3、 例 要求把数据段中以SRC_MESS为偏移地址的一串字 符“HELLO!”,传送到附加段中以NEW_LOC开始的单元中。 解:DATA SEGMENT ;数据段 SRC_MESS DB HELLO! ;源串 DATA ENDS ; EXTRA SEGMENT ;附加段 NEW_LOC DB 6 DUP(?) ;存放目的串 EXTRA ENDS ; CODE SEGMENT ASSUME CS:CD, DS:DATA, ES:EXTRA START: MOV AX,DATA MOV DS,AX ;DS数据段段址 MOV AX,EXTRA MOV ES,AX ;ES附加段段址 LEA SI,SRC_MESS ;SI指向源串偏移地址 LEA DI,NEW_LOC ;DI指向目的串偏移地址 MOV CX,6 ;CX作串长度计数器 CLD ;清方向标志,地址增量 REP MOVSB ;重复传送串中各字节,直到CX=0 其中“REP MOVSB”指令可用以下几条指令代替: AGAIN: MOVS NEW_LOC, SRC_MESS DEC CX JNZ AGAIN 4、 例 比较两个字符串,一个是程序中设定的口令串PASSWORD,另 一个是从键盘输入的字符串IN_WORD,若输入串与口令串相同,程序 将开始执行。否则,程序驱动PC机的扬声器发声,警告用户口令不 符,拒绝往下执行。 解:这可以用CMPS指令来实现,有关程序段如下: DATA SEGMENT ;数据段 PASSWORD DB 750424LI ;口令串 IN_WORD DB 750424LE ;从键盘输入的串 COUNT EQU 8 ;串长度 DATA ENDS CODE SEGMENT ;代码段 LEA SI, PASSWORD ;源串指针 LEA DI, IN_WORD ;目的串指针 MOV CX, COUNT ;串长度 CLD ;地址增量 REPZ CMPSB ;CX0且串相等时重复比较 JNE SOUND ;若不相等,转发声程序 OK: ;比完且相等,往下执行 SOUND: ;使PC机扬声器发声 ;并退出 CODE ENDS 5、例 在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下 来,送到BX寄存器中,若没有查到,则将BX寄存器清0。设字符串起 始地址STRING的偏移地址为0,字符串长度为CX。 解: MOV DI,OFFSET STRING ;DI字符串偏移地址 MOV CX,COUNT ;CX字符串长度 MOV AL,A ;AL关键字A的A5CII码 CLD ;清标志方向 REPNE SCASB ;CX0(没查完)和ZF=0(不相等)时 重复 JZ FIND ;若ZF=1,表示已搜到,转出 MOV DI,0 ;若ZF=0,表示没搜到,DI 0 FIND:MOV BX,DI ;BX 搜索次数 HLT 说明: DI初值存起始地址偏移量0,搜索一次后,DI自动加1,使DI的值等于 1; 每执行一次搜索操作,DI自动增1; 因此可用DI的值表示搜索次数。 6、 例 若在数据段中有一个数据块,起始地址为BLOCK,数据块中 的数为8位带符号数,要求将其中所含的正、负数分开,然后把正数送 到附加段中始址为PLUS_DATA的缓冲区,负数则送到附加段中始址为 MINUS_DATA的缓冲区。 分析: 把数据块作为数据串处理: 用SI作源串指针; DI和BX分别作正、负数目的缓冲区的指针; CX用于控制循环次数。 技巧: 使用STOSB指令必须以SI为源指针,DI为目的指针; 负数区的目的指针在BX中,要用XCHG指令将BX内容送进DI,让DI指 向负数区,同时也把DI中的正数区目的指针保护了起来; 执行STOSB指令后,再用XCHG指令交换回来,以便下次重复执行时 (转回GOON标号后),LODS指令仍能正确执行。 解:写出如下程序段: START: MOV SI, OFFSET BLOCK ;SI为源串指针 MOV DI, OFFSET PLUS_DATA ;DI为正数目的区指针 MOV BX, OFFSET MINUS_DATA ;BX为负数目的区指针 MOV CX, COUNT ;CX放循环次数 CLD GOON: LODSB BLOCK ;AL源操作数的一个字节 TEST AL, 80H ;是负数? JNZ MINUS ;是,转MINUS STOSB ;非负数,将字节送正数区 JMP AGAIN ;处理下一个字节 MINUS: XCHG BX, DI ;交换正负数指针 STOSB ;负数送入负数区 XCHG BX, DI ;回复正负数指针 AGAIN: DEC CX ;次数减1 JNZ GOON ;未处理完,继续传送 HLT ;停机 7、例 设某个学生的英语成绩已存放在AL寄存器中,若低于60分,则 打印F(FAIL);若高于或等于85分,则打印G(GOOD);当在60分和84分 之间时,打印P(PASS)。 解:用下面程序实现要求的操作。 程序: CMP AL,60 ;与60分比较 JB FAIL ;60,转FAIL CMP AL,85 ;60,与85分比较 JAE GOOD ;85,转GOOD MOV AL,P ;其它,将ALP JMP PRINT ;转打印程序 FAIL: MOV AL,F ; ALF JMP PRINT ;转打印程序 GOOD: MOV AL,G ; ALG PRINT: ;打印存在AL中的字符 8、例 假设某温度控制系统中,从温度传感器输入一个8位二进制的摄 氏温度值。当系统中温度低于100度时,则打开加热器;当温度上升到 100度或100度以上时,关闭加热器,进行下一步处理。设温度传感器的 端口号为320H,同时假设控制加热器的输出信号连到端口321H的最低 有效位,当将这一位置1时,加热器便打开,清0时则关闭加热器。 解:实现上述温度控制的程序如下: 程序: GET_TEMP: MOV DX,320H ;DX指向温度输入端口 IN AL,DX ;读取温度值 CMP AL,100 ;与100度比较 JB HEAT _ON ;100度,加热 JMP HEAT _OFF ; 100度,停止加热 HEAT _ON: MOV AL,01H ;D0位置1,加热 MOV DX,321H ;加热器口地址 OUT DX,AL ;打开加热器 JMP GET_TEMP ;继续检测温度 HEAT _OFF: MOV AL,00H ;D0位置0,停止加热 MOV DX,321H OUT DX,AL ;关闭加热器 ;进行其他处理 9、 例 设商店里有8种商品,价格分别为83元,76元,65元,84元,7l 元,49元,62元和58元,现要将每种商品提价7元,编程计算每种商品 提价后的价格。 解:加法问题:将商品的原价按BCD码的形式,依次存放在标号为 OLD开始的8个存储单元中,而新的价格存放进NEW开始的8个单元, 然后用LOOP指令来实现8次循环。即 程序清单: OLD DB 83H,76H,65H,84H DB 71H,49H,62H,58H NEW DB 8 DUP( ?) MOV CX,08H ;共8种商品 MOV BX,00H ;BX作指针,初值为0 NEXT: MOV AL,OLDBX ;读入一个商品的原价 ADD AL,7 ;加上提价因子 DAA ;调整为十进制 MOV NEWBX ,AL ;存放结果 INC BX ;地址指针加1 LOOP NEXT ;如未加满8次,继续循环 ;已加完8次 10、例 这是一个用循环和跳转指令来控制PC机的扬声器发声的程 序。在PC机中,61H端口的D1和D0位接到扬声器接口电路上,在D00 的情况下:当Dl1时,扬声器被接通,D10则断开,通过控制这一 位的值,就能产生一个由1和0构成的二进制序列,使扬声器发声。 解: IN AL,61H ; AL从61H端口读取数据 AND AL,0FCH ;保护D7 D2位, D0位清零 MORE: XOR AL,02 ;触发D1位,使之在0和1间变化 OUT 61H,AL ;控制扬声器开关通断 MOV CX,260 ;CX=循环次数 DELAY: LOOP DELAY ;循环延时 JMP MORE ;再次触发 延时程序的实现: MOV CX,10 ;循环次数为10 DELAY: LOOP DELAY ;本指令重复执行10次 11、例 设有一个由50个字节组成的数组存放在ARRAY开始的内存 单元中,现要对该数组中的元素进行测试,若元素为0,而且不是最后 一个元素,便继续进行下一个元素的测试,直到找到第一个非零元素或 查完了为止。 解: ARRAY: DB , , ;含50个元素的数据 MOV BX,OFFSET ARRAY ;BX指向数组开始单元 DEC BX ;指针减1 MOV CX,50 ;CX=元素个数 NEXT: INC BX ;指向数组的下 个元素 CMP BX,00H ;数组元素与0比较 LOOPE NEXT ;若元素为0 ;和 CX0,循环 ;否则,继续查找 12、例 设一个由17个字符组成的字符串存放在STRING开始的内存中, 查找该字符串中是否包含空格符。若没有找到和尚未查完,测继续查 找,直到找到第一个空格符或查完了才退出循环。 解: 下面是实现上述操作的程序: STRING: DB Personal Computer ;字符串 MOV BX,OFFSET STRING ;BX指向字符串的开始 DEC BX ;BX1 MOV CX,17 ;CX=字符串长度 NEXT: INC BX ;指向下一个字符串 CMP BX,20H ;字符串元素与空格比较 LOOPNE NEXT ;找到空格或CX已为0 13、例 设CPU的时钟频率为5MHZ,试编写一个延时1ms的程序。 解:程序如下: ;时钟周期执行次数 DEL_1MS: MOV CX,N ;4 1 NEXT: NOP ;3N NOP ;3N LOOP NEXT ;循环时为17,不循环为5 延时常数N的计算: CPU的时钟频率为5MHZ,则一个时钟周期为: 0.2us。 延时t1ms所需要的总的时钟周期数CT为: CT 1s/0.2us5000 总的时钟周期数CT又可以用循环常数N来表示: CT43N3N17(N1)523N85000 N(50008)/232180DAH,可实现1ms的精确延时。 (注:第一条指令只执行一次;两条NOP指令各执行N次;最后的 LOOP指令,共循环执行N一1次,最后一次不循环) 14、例 若希望获得时间更长的延时,可以采用嵌套的多重循环程序来 实现。这时程序中往往有两个定时常数,通常先指定其中的一个,再计 算出另一个。 解:观察下面的程序: ;时钟次数 MOV BX,N1 ;4 1 CNT1: MOV CX,N2 ;4 N1 CNT2: LOOP CNT2 ;(17N212)N1 DEC BX ;2N1 JNZ CNT1 ;16 N1 12 上面程序执行所需要的总的时钟周期数CT为: CT4(4N1)(17(N21)5)N1)(2N1)(16(N11)4) 4(4N1)(17N212)N1)(2N1)(16N112) 17N1N210N18 假设CPU的时钟频率仍为5MHz,可根据所需的延时,计算出总的时 钟周期数。然后,先选定常数N2,再根据上式算出N1来。 15、例 两个16位无符号二进制数相乘 DDATA SEGMENT ;数据段 D1 DW 1234H D2 DW 5678H P1 DD ? P2 DD ? DDATA ENDS EDATA SEGMENT ;附加段 E1 DB ? E2 DW 4 DUP (?) EDATA ENDS SSTACK SEGMENT STACK STACK DW 100 DUP (?) SSTACK ENDS CCODE SEGMENT MAIN PROC FAR ASSUME CS:CCODE, DS:DDATA, ES:EDATA, SS:SSTACK START: PUSH DS ;返回DOS用 SUB AX, AX PUSH AX MOV AX, SSTACK ;初始化SS MOV SS, AX MOV AX, DDATA ;初始化DS MOV DS,AX MOV AX, EDATA ;初始化ES MOV ES, AX L1: MOV BX, OFFSET D1 ;D1*D2,积在(DX, AX) MOV AX, BX MOV DX, 0 MUL WORD PTR BX+2 MOV BX, OFFSET P1 ;积P2和P1所指向的存储单元 MOV BX, AX MOV BX+2, DX RET MAIN ENDP CCODE ENDS END START 16、 例 用过程调用的方法,将内存中N个BCD码相加。 DATA SEGMENT ONE DB 22,33,44,55 TWO DB 55,66,77,88 SUM DB 20 DUP(?) DATA ENDS STACK SEGMENT STACK STT DB 50 DUP(?) TOP EQU LENGTH STT STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA START: MOV AX, STACK MOV SS, AX MOV SP, TOP PUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS, AX MOV SI, OFFSET ONE ;SI指向第一个加数 MOV BX, OFFSET TWO MOV DI, OFFSET SUM CLD ;清方向标志 CLC ;清进位标志 MOV CX, 4 LL: CALL ABC LOOP LL RET MAIN ENDP ABC PROC NEAR ;完成单字节数据加法运算 LODSB ;【SI】AL, SI+1SI L1: ADC AL, BX ;相加 DAA ;十进调整 STOSB ;ALDI,DI+1DI INC BX ;指针改变 RET ABC ENDP CODE ENDS END START 17、 例5-1 内存中TABLE开始存放09的平方值,通过人机对话,当 任给定一个数X(09),查表得X的平方值,放在AL中。 解: DATA SEGMENT TABLE DB 0,1,4,9,16,25,36,49,64,81 BUF DB Please input one number (09):,0DH,0AH,$ DATA ENDS STACK SEGMENT PARA STACK STACK DB 50 DUP(?) TOP LABEL WORD STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:DATA, DS:DATA, SS:STACK START:MOV AX, DATA ;段初始化 MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, OFFSET TOP MOV BX, OFFSET TABLE NEXT: MOV DX, OFFSET BUF ;9号功能调用,提示输入一个 数(P161) MOV AH, 9 INT 21H MOV AH, 1 ;1号功能调用,键入数送AL (P159) INT 21H MOV AH, 0 ;查表得输入数的平方值 AND AL, 0FH ADD BX, AX MOV AL, BX MOV AH, 4CH INT 21H RET MAIN ENDP CODE ENDS END START 18、 存储器中有一串字符串首址为BUF,字符串长度N小于256,要求 分别计算出其中数字09,字母AZ和其它字符的个数,并分别将 它们的个数存放到此字符串的下面三个单元中。 解: DATA SEGMENT BUF DB N DB 01H,38H,47H,60H, 76H NUM DB 3 DUP (?) DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE ,DS:DATA START:PUSH DS SUB AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV CH, N ;数组个数NCH MOV BX, 1 MOV DX, 0 ;DH计数字的个数,DL计字母的个数 LP: MOV AH, BUF BX CMP AH, 30H JL NEXT ;小于0转 CMP AH, 39H JG ABC ;大于9转 INC DH ;数字个数加1 JMP NEXT ABC: CMP AH, 41H JL NEXT ;小于A转 CMP AH, 5AH JG NEXT ;大于Z转 INC DL ;字母的个数加1 NEXT: INC BX ;数组地址加1 DEC CH ;计数器减1 JNZ LP MOV BUFBX, DH ;数字的个数送入内存单元 MOV BUFBX+1, DL ;字母的个数送入内存单元 MOV AH, N SUB AH, DH ;NDHDL=其它字符的个数 SUB AH, DL MOV BUFBX+2, AH ;其它字符的个数送入内存单元 RET MAIN ENDP CODE ENDS END START 19、 设有首地址为BUFFER的数组,已按升序排好,数组长度N10, 在数组中查找数M(80),若找到则从数组中删掉,若找不到将它插入 正确的排序位置,DX中记录数组最后的长度。 解: DATA SEGMENT BUFFER DW 5,10,32,47,53,77,89,106,115,124 N EQU 10 M EQU 80 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA MAIN PROC FAR START:PUSH DS SUB AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, M ;待查数AX MOV CX, N ;计数CX MOV DX, N MOV DI, OFFSET BUFFER CLD REPNE SCASW ;串扫描查找 JE DEL ;查到ZF=1 DEC DX ;未查到,此数插入正确位置 MOV SI, DX ;关键字与最后一个数比较 ADD SI, DX L1: CMP AX, BUFFERSI JL L2 ;关键字比较组中某个字小 MOV BUFFERSI+2, AX ;否则插在后面 JMP L3 L2: MOV BX, BUFFERSI ;数组下移一位 MOV BUFFERSI+2, BX SUB SI, 2 JMP L1 L3: ADD DX, 1 ;修改长度 JMP NEXT1 DEL: JCXZ NEXT ;找到,删此元素 DEL1: MOV BX, DI ;其后元素依次前移 MOV DI-2, BX ADD DI, 2 LOOP DEL1 NEXT:DEC DX ;改变数组长度 NEXT1:RET MAIN ENDP CODE ENDS END START 解: MOV SI, OFFSET BUF ;设置内存地址 MOV CH, 4 ;计数初值4 NEXT: MOV CL, 4 ROL BX, CL ;最高位移到右边 MOV AL, BL ;一个数转换成ASCII码 AND AL, 0FH ADD AL, 30H CMP AL, 3AH ;字符为AF吗? JL STORE ADD AL, 7 STORE:MOV SI, AL ;字符存入内存 MOV AH, 2 ;调用屏幕显示(P161) MOV DL, AL INT 21H INC SI ;修改计数并判断 DEC CH JNZ NEXT HLT ;循环结束 21、 AX寄存器中有一个16位二进制数,编程统计其中1的个数,结果 放到CL寄存器。 解:相应程序如下 MOV CL, 0 ;初始化 L1: AND AX, AX ;控制循环 JZ STOP SAL AX, 1 ;循环体 JNC L2 INC CL L2: JMP L1 STOP: HLT 22、 存储器数据段从BUF开始存放一个字数组,数组中第一个字 中存放该数组的长度N,编制一个程序使此数组中的数据按照从小到大 的次序排列。 解: ADATA SEGMENT BUF DW N,15,37,8600,A768H,3412H,1256H,76H ADATA ENDS ASTACK SEGMENT STACK STACK SA DB 100 DUP(?) TOP LABEL WORD ASTACK ENDS ACODE SEGMENT ASSUME CS:ACODE, DS:ADATA, SS:ASTACK MAIN PROC FAR START: MOV AX, ASTACK MOV SS, AX MOV SP, OFFSET TOP PUSH DS SUB AX, AX PUSH AX MOV AX , ADTAT MOV DS, AX MOV BX, 0 MOV CX, BUFBX ;设计数器CX,内循环次 数 DEC CX L1: MOV DX, CX ;设计数器DX,外循环次数 L2: ADD BX, 2 MOV AX, BUFBX ;取BUFI与BUFI+2 CMP AX, BUF BX+2 ;若BUFIBUFI+1,两数交换, FLAG=1 CMP AX, DI+2 JBE CONTI XCHG AX, DI+2 MOV DI, AX MOV BH, 1 CONTI :LOOP L2 CMP BH, 0 ;FLAG=0,内循环未交换数,跳出外循 环, ;否则DX1,又一次内循环,继续比较 JE STOP MOV CX, DX MOV DI, OFFSET BUF LOOP L1 STOP: RET 24、有一个子程序说明如下: ;名称:BCD2BIN ;功能:将一个字节的BCD码转换成二进制数 ;所用寄存器:CX ;入口参数:AL存放两位BCD码 ;出口参数:AL存放二进制数 ;调其它子程序:无 子程序形式如下; BCD2BIN PROC NEAR(或FAR) PUSH CX MOV CH, AL AND CH, 0FH ;存低8位 MOV CL, 4 SHR AL, CL ;高8位右移4位后乘10 MOV CL, 10 MUL CL ADD AL, CH ;高8位加低8位 POP CX RET BCD2BIN ENDP 25、 数据段定义两个数组,编程序实现数组段分别求和(不计溢出)。 解:本例通过存储器来传递参数。相应程序如下: DATA SEGMENT ARY1 DW 100 DUP(?) ;定义数组1 SUM1 DW ? ARY2 DW 100 DUP(?) ;定义数组2 SUM2 DW ? DATA ENDS STACK SEGMENT STACK SA DW 50 DUP(?) TOP EQU LENGTH SA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, TOP LEA SI, ARY1 ;数组1首地址,入口参数 MOV CX, LENGTH ARY1 ;数组1长度,入口参数 CALL SUM ;调用求和子程序 LEA SI, ARY2 ;数组2首地址,入口参数 MOV CX, LENGTH ARY2 ;数组2长度,入口参数 CALL SUM ;调用求和子程序 RET MAIN ENDP SUM PROC NEAR ;子程序 XOR AX, AX ;AX清0 L1: ADD AX, WORD PTRSI ;加数组元素 INC SI INC SI LOOP L1 MOV WORD PTRSI, AX ;数组和送入SUM MOV AH, 4CH INT 21H RET SUM ENDP ;子程序返回 CODE EDNS END START 26、 通过堆栈传递参数,实现十进制数数组求和,要求主程序和过程 不在同一个代码段中,要进行段间调用。相应程序如下: MDATA SEGMENT ARY1 DW 20 DUP(?) ;定义数组1 SUM1 DW ? ARY2 DW 20 DUP(?) ;定义数组2 SUM2 DW ? MDATA ENDS MSTACK SEGMENT STACK SB DW 100 DUP(?) TOP LABEL WORD MSTACK ENDS MCODE SEGMENT ;主程序段 ASSUME CS:MCODE,DS:MDATA,SS:MSTACK MAIN PROC FAR START: MOV AX, MSTACK MOV SS, AX MOV SP, OFFSET TOP PUSH DS ;初始化DS, SS, SP MOV AX, 0 PUSH AX MOV AX, MDATA MOV DS, AX MOV AX, OFFSET ARY1 ;PADD过程入口参数 进栈 PUSH AX ;数组地址 MOV AX, SIZE ARY1 ;数组长度 PUSH AX CALL FAR PTR PADD MOV AX, OFFSET ARY2 PUSH AX MOV AX, SIZE ARY2 PUSH AX CALL FAR PTR PADD RET MAIN ENDP MCODE ENDS PCODE SEGMENT ;过程段 ASSUME CS:PCODE, DS:MDATA, SS:MSTACK PADD PROC FAR PUSH BX ;寄存器保护 PUSH CX PUSH BP MOV BP, SP PUSHF ;标志入栈 MOV CX, BP+10 ;数组长度CX MOV BX, BP+12 ;数组ARY起始地址BX MOV AX, 0 NEXT: ADD AL, BX ;数组相加 DAA MOV DL, AL ; 低位和入DL暂存 MOV AL, 0 ADC AL, AH ;AH进位 AL DAA MOV AH, AL ;进位 AH MOV AL, DL ;从DL中取回低位和 INC BX LOOP NEXT MOV BX, AX ;送数组和SUM POPF ;标志出栈 POP BP POP CX POP BX RET 4 ;返回作废参数 ;弹出返回地址后,再弹出4个字节数据 PADD ENDP PCODE ENDS END START 27、 己知两个无符号数125及468,求它们的和并将和转换成十六进制 数在屏幕上显示DATA SEGMENT P DW 125, 368 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA MAIN PROC FAR START PUSH DS XOR AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV SI, OFFSET P ;数组起始地址SI CALL PADD ;两数相加子程序 RET MAIN ENDP PADD PROC NEAR ;两数相加子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AX, SI ;数组起始地址SI ADD AX, SI+2 MOV SUM, AX CALL DISP ;显示子程序 POP DX POP CX POP BX POP AX RET PADD ENDP DISP PR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中科学核心知识点解析
- 工程项目推进中的时间管理诀窍试题及答案
- 水利水电工程社会影响力试题及答案
- 2023 年注册会计师《会计》(8 月 25 日第一场)考试及答案解析
- 2024水利水电工程设备管理考题试题及答案
- 移动通信基站设备维护与支持合同
- 智能化物流管理服务合同
- 农村生态农业技术合作框架协议
- 工程经济实务与决策试题及答案
- 物业智能管理系统推广合作协议
- 经济博弈论(山东联盟)智慧树知到期末考试答案2024年
- 【真题】2023年常州市中考道德与法治试卷(含答案解析)
- 《中医常用护理技术基础》课件-一般护理-第二节生活起居护理
- 2024届高考英语作文复习专项:读后续写“助人为乐”类范文5篇 讲义素材
- 车站服务员服务技能汇总课件
- GNSS测量技术:GNSS组成与卫星信号
- 对校长(园长)任前集中廉政谈话提纲
- CG造型基础与创作进阶篇
- 纪昌学射的课件
- 泌尿外科良性前列腺增生“一病一品”
- 市场部经理岗位职责
评论
0/150
提交评论