文档详情

微机原理与接口技术复习总结讲解.ppt

发布:2017-04-19约6.96千字共78页下载文档
文本预览下载声明
*;*;*;*;*;*;*;思考题:;*;*;*;*;习题;第4章 汇编程序设计;[基本要求];1.编程计算((X+Y)*10)+Z)/X,X、Y、Z都是16位无符号数,结果存在RESULT开始的单元。 算法: 1)算数和扩展为2个字,4字节,用DX,AX暂存结果; 2)加法考虑进位,用ADC;减法考虑借位用SBB。 3)除法DIV,乘法MUL指令;1.(习题4.11 )试编程序,统计由40000H开始的16K个单元中所存放的字符“A”的个数,并将结果存放在DX中。 分析: 1)需要循环控制,循环次数已知,数据指针可以用SI,数据段初始化为(DS)=4000H,(SI)=0000H; 2)查找到“A” ,可以用比较指令CMP,配合JE/JNE, LOOP (或用串操作指令SCASB);DATA SEGMENT BUF DB DFASFAAAFDFAAFFFA COUNT EQU $-BUF NUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA BEGIN: MOV AX,DATA MOV DS,AX MOV CX,COUNT ;COUNT=16*1024 MOV DX,0 LEA SI,BUF MOV BL,A NEXT : CMP [SI],BL JNE OTHER INC DX OTHER: INC SI LOOP NEXT LP:JMP LP ;程序陷阱,方便调试 CODE ENDS END BEGIN;2.(习题4.12)统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。 ; MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS_D MOV BX,OFFSET MINUS_D MOV CX, 8 ;数据个数送CX GOON:MOV AL,[SI] TEST AL, 80H JNZ JMIUS ;为负数,转 INC PLUS ;正数个数加一 MOV [DI],AL ;传正数 INC DI JMP AGAIN JMIUS: INC MINUS ;负数个数加一 MOV [BX],AL INC BX AGAIN: INC SI DEC CX JNZ GOON;2.(习题4.17)将BUF1开始的100字节传送到BUF2开始的单元,然后从中检索字符“#”,并将此单元换成空格字符。 ;3、(习题4.8)编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。;4.(习题4.9)编求和Y=A1+A2+…+A100,Ai为字节。 分析:1)字节累加,算法为si=si+ai。和扩展为2个字节,其中部分和低位存AL,高位扩展到AH,用于处理累加和产生的进位。 2) 用ADD计算字节累加和,用ADC将进位加到高位,用LOOP完成循环。 ;5.(例4-7)编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM。 【分析】 1)算法:SUM=1+2+3+… 用S表示部分和,即: Si=Si-1+i ;i=1,2,3,… 2)可用AX求累加和S,BX存自然数i。;DATA SEGMENT SUM DW ? CN DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;初始化 MOV AX,0 ;0送AX MOV BX,0 ;0送BX LP: INC BX ADD AX,BX ;求累加和 CMP AX,1000;条件控制 JBE LP ;≤1000转LP MOV SUM,AX M
显示全部
相似文档