文档详情

内工大微机原理 第六章 微型计算机程序设计--1课件.ppt

发布:2017-08-07约2.14千字共18页下载文档
文本预览下载声明
第六章 汇编语言程序设计 6-1程序设计步骤 6-2顺序程序 6-3分支程序 6-4循环程序 6-5子程序 6-6查表程序;6-1 程序设计步骤;6-2 顺序程序;二、举例设两个BCD码1234H和5678H分别存放在数据段中从1000H和2000H开始的单元中,计算这两个数的和,结果存放在3000H开始的单元中。 org 1000h data1 dw 1234h org 2000h data2 dw 5678h org 3000h sum db 3 dup(?);MOV AL, DATA1 ADD AL, DATA2 ;低字节相加 DAA ;十进制调整 MOV SUM, AL ; 存低字节和 MOV AL, DATA1+1 ADC AL, DATA2+1 ;高字节带进位相加 DAA ;十进制调整 MOV SUM+1, AL ;存高字节和; MOV AL,0 ADC AL,AL MOV SUM+2,AL ;6-3 分支程序;例 :求AL中补码绝对值,送BL。(正数不变,负数求补。) TEST AL,80H JZ NEXT ;为正数? NOT AL ;负数求补 INC AL NEXT: MOV BL,AL 已知:AL=75H 运行程序后, 求:BL=? 已知:AL=F5H 运行程序后, 求:BL=? ;X=0?;SYMB: MOV AL,BL ;取X ADD AL,0 ;OR AL,AL JZ EXIT ;X=0,Y=X TEST AL,80H JNZ MINUS ;X<0 MOV AL, 1 ;X>0,Y=+1 JMP EXIT MINUS: MOV AL,0FFH ;X<0,Y= -1 EXIT : MOV BH,AL ;保存Y ;;二、举例1 例: 求无符号字类型输数组中的最大值。已知数组存放在data开始的单元,字组长度10,最大值送存入变量max中。 定义数据: dseg segment data dw 0f0a3h,1,2,3,4,5,6,7,8,0ffffh max dw ? dseg ends;开始;START: MOV AX,DSEG MOV DS,AX MOV BX,OFFSET DATA MOV AX,0 MOV CX,10 NEXT1: CMP AX,[BX] JNC NEXT2 ;AX≥[BX]转到 MOV AX,[BX] NEXT2: INC BX INC BX LOOP NEXT1 MOV MAX,AX ;例2: 确定一串ASCII码字符串的长度(小于一个字)。已知字符串首址BUF,???符串结束标志为回车符(0DH),字符串长度存NUM。 DSEG SEGMENT BUF DB ‘HELLO WORLD!’,0DH NUM DW ? DSEG ENDS;开始;START: MOV SI,OFFSET BUF MOV BX,0 MOV AL,0DH NEXT: CMP AL,[SI] JZ DONE INC
显示全部
相似文档