西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第4章 汇编语言程序设计 4.5 常见程序设计举例

4.5常见程序设计举例 1.码制转换 十、二进制数、ASCⅠI码之间的互相转换 ①BcD数→2进制数 算法:Dn101+…+D0+10 (.(Dn110+Dn2)*10+.)10+Do =(..(010+Dn1)*10+Dn2)*10+.)*10+D 即:新的中间结果=中间结果*10+本位数字 (中间结果初值为0)
1 1.码制转换 十、二进制数、ASCII码之间的互相转换。 ①BCD数→2进制数 算法:Dn-1 *10n-1 +……+D0*100 = (…(Dn-1 *10+ Dn-2 )*10+…)*10+ D0 = (…((0*10+Dn-1 )*10+ Dn-2 )*10+…)*10+ D0 即: 新的中间结果 = 中间结果*10+本位数字 (中间结果初值为0) 4.5 常见程序设计举例

程序1:将≤65535的并压缩BCD数转换成2进 制数。程序如下 ;数据殿定义 mydata SEGMENT decnum DB 5, 3, 0, 1, 9 BCD #3 53019 binnum DW mydata ENDS
2 程序1:将≤65535的非压缩BCD数转换成2进 制数。程序如下。 ;数据段定义 mydata SEGMENT decnum DB 5, 3, 0, 1, 9 ;BCD数 53019 binnum DW ? mydata ENDS

prog SEGMENT ASSUME CS. prog, DS. mydata begin: MOv Ax, mydata MOV DS.AX MOV S OFFSET decnum MOV CX. 5 5位BCD数 MOV BX 10 XOR AXAX ;中间结果初始值为0 Next MUL BX ;中间同结果*10+本位数字 ADD AL, [SI ADC AH0 INC S 指向下位BCD数 LOoP next Mov binnum. X ;(存结果 MOV AH 4CH INT 21H prog ENDS ENd begin
3 prog SEGMENT ASSUME CS:prog,DS:mydata begin: MOV AX, mydata MOV DS, AX MOV SI, OFFSET decnum MOV CX, 5 ;5位BCD数 MOV BX, 10 XOR AX, AX ;中间结果初始值为0 Next: MUL BX ;中间结果*10+本位数字 ADD AL, [SI] ADC AH, 0 INC SI ;指向下位BCD数 LOOP next MOV binnum, AX ;保存结果 MOV AH, 4CH INT 21H prog ENDS END begin

程序2:把255的非压缩BCD数转换成2进制数 decnum Db 1, 5, 9, BCD*159 binnum Db MOV AX decnum XCHG AH AL ;百位在AH,十位在AL AAD ;百位数*10+十位数 MOV AH AL ;中间结果送AH MOV AL decnum+2 AAD ;中间结果*10+个位数 Mov binnum, AL
4 程序2:把≤255的非压缩BCD数转换成2进制数 decnum DB 1,5,9 ;BCD数159 binnum DB ? …… MOV AX,decnum XCHG AH, AL ;百位在AH, 十位在AL AAD ;百位数*10 + 十位数 MOV AH, AL ;中间结果送AH MOV AL, decnum+2 AAD ;中间结果*10 + 个位数 MOV binnum, AL ……

② ASCII码→二进制数(用于输入) 例:从键盘输入两个整数,并求其和。 因键入为整数,故要进行如下转换: ASCII→BCD→二进制数 ASCII→BCD码很简单,高4位清零即可得到非压 缩的BCD码。 BCD→二进制数在本例中采用用以下方法: (((0+千位数)*10+百位数)*10)+十位数)*10+个位数 第一次中间结果 第二次中间结果 第三次中间结果 最终结果
5 例:从键盘输入两个整数,并求其和。 因键入为整数,故要进行如下转换: ASCII→BCD→二进制数 ASCII→BCD码很简单,高4位清零即可得到非压 缩的BCD码。 BCD→二进制数在本例中采用用以下方法: ((((0+千位数)*10+百位数)*10)+十位数)*10+个位数 ②ASCII码→二进制数(用于输入) 第一次中间结果 第二次中间结果 第三次中间结果 最终结果

开始 转换子程序 开始 取第一个ASC码」 是负号吗 键入两个数 Y 匚数字符个数=1,指针+1 两个数分别转换 成二进制数 指针定位 字符个数-1 相加 0? 加个位数 如有溢出则提示 取数字,与中间结果 是负数 返回DOS 相加,再乘以10 则求补 指向下一个数字字符 存结果 结束 结束)
6 开始 两个数分别转换 成二进制数 键入两个数 相加 结束 返回DOS 如有溢出则提示 开始 取第一个ASCII码 是负号吗? 数字符个数-1,指针+1 指针定位 字符个数-1 = 0? 取数字,与中间结果 相加,再乘以10 指向下一个数字字符 加个位数 是负数 则求补 存结果 结束 N Y Y N 转换子程序

程序如下: DATA SEGMENT STRI DB10,?,10DUP(?);第1个数的输入缓冲区 STR2 DB10,?,10DUP(?);第2个数的输入缓冲区 NUM DW?,? 存转换后的二进制数 SUM DW O ;存和 OVER DB Overflow!,13, 10, 'S DATA ENDS CODE SEGMENT ASSUME CS: CODE. DS: DATA PROC FAR
7 程序如下: DATA SEGMENT STR1 DB 10,?,10 DUP(?) ;第1个数的输入缓冲区 STR2 DB 10,?,10 DUP(?) ;第2个数的输入缓冲区 NUM DW ?,? ;存转换后的二进制数 SUM DW 0 ;存和 OVER DB ‘Overflow!’ ,13,10, ’$’ DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR

START: MOV AX DATA Mov DS. AX MOV AH. OAH LEA DX STRI INT 21H 输入第一个数字串(设为26) MOV AH. OAH LEA DX STR2 INT 21H 输入第二个数字串(设为33) LEA BX STR1 串1的首地址送BX LEA DI NUM 存二进制首地址送DI CALL CHANGE;将串1ASCI码→二进制 LEA BX STR2 串2的首地址送BX
8 START: MOV AX,DATA MOV DS,AX MOV AH,0AH LEA DX,STR1 INT 21H ;输入第一个数字串(设为26) MOV AH,0AH LEA DX,STR2 INT 21H ;输入第二个数字串(设为33) LEA BX,STR1 ;串1的首地址送BX LEA DI,NUM ;存二进制首地址送DI CALL CHANGE ;将串1 ASCII码→二进制 LEA BX,STR2 ;串2的首地址送BX

LEA DI,NUM+2;指向 CALL CHANGE ;将串2ASCI码→二进制 MOV AX. NUM (AX=LNUM=001AH ADD AX. NUM+2 两数相加,(AX)=003BH MOV SUM. AX ;存和 JNO NEXT 无溢出,转NEXT LEA DX. OVER Mov aH. 9 INT 21H ;显示’0 verflow! NEXT: MOV AH. 4CH INT 21H 返回DOS MAIN ENDP
9 LEA DI,NUM+2 ;指向 CALL CHANGE ;将串2 ASCII码→二进制 MOV AX,NUM ;(AX)=[NUM]=001AH ADD AX,NUM+2 ;两数相加,(AX)=003BH MOV SUM,AX ;存和 JNO NEXT ;无溢出,转NEXT LEA DX,OVER MOV AH,9 INT 21H ;显示’Overflow!’ NEXT: MOV AH,4CH INT 21H ;返回DOS MAIN ENDP

CHANGE PROC MOV CL,[BX+1];实际字符数送CL MOV AL,[BX+2];第一个字符送AL MOV CH AL ;暂存在CH CMP AL 第一个字符是负号吗? JNZ NEXTI 不是,转NEXT1 DEC CL ;字符数减1 INC BX NEXTI: ADD BX. 2 指向第一个数字字符 MOV AX. O 清零AX,存二进制数 LPI DEC CL JZ NEXT2 若(CL)=0,转NEXT2 MOV DL, BX 取字符 AND DL, OFH 转换成BCD码 ADD AL DL ;加到中间结果上 ADC AH.O
10 CHANGE PROC MOV CL,[BX+1] ;实际字符数送CL MOV AL,[BX+2] ;第一个字符送AL MOV CH,AL ;暂存在CH CMP AL,’-’ ;第一个字符是负号吗? JNZ NEXT1 ;不是,转NEXT1 DEC CL ;字符数减1 INC BX NEXT1: ADD BX,2 ;指向第一个数字字符 MOV AX,0 ;清零AX,存二进制数 LP1: DEC CL JZ NEXT2 ;若(CL)=0,转NEXT2 MOV DL,[BX] ;取字符 AND DL,0FH ;转换成BCD码 ADD AL,DL ;加到中间结果上 ADC AH,0
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第3章 8086/8088指令系统 3.3 8086/8088指令系统 3.3.5 程序控制指令 3.3.6 处理器控制指令.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第3章 8086/8088指令系统 3.1 概述 3.2 8086的寻址方式.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第3章 8086/8088指令系统 3.3 8086/8088指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第3章 8086/8088指令系统 3.3 8086/8088指令系统 3.3.3 逻辑运算和移位指令 3.3.4 串操作指令.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第2章 微型计算机基础.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第1章 基础知识.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第8章 MCS-51串行口.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第7章 A/D和D/A转换接口技术.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第6章 键盘、显示接口技术.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第5章 单片机应用系统的扩展.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第4章 MCS51程序设计.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第2章 单片机系统组成原理.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第1章 计算机基础知识.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第3章 单片机指令系统.ppt
- 《3ds max应用制作》第二讲 环境设施的效果表现.ppt
- 《3ds max应用制作》第一讲 城市住宅楼效果图的制作.ppt
- 《计算机组成原理实验》课程教学资源(PPT课件讲稿)第一章 计算机组成原理实验概述 第二章 FD-CES实验台 第三章 可编程器件技术 第四章 PLD硬件基础 第五章 PLD开发环境.ppt
- 《计算机组成原理实验》课程教学资源(PPT课件讲稿)第七章 PLD部件实验.ppt
- 《计算机组成原狸实验(三)》第七章 可编程逻辑器件设计语言ABEL.ppt
- 《计算机组成原理实验》课程教学资源(PPT课件讲稿)第六章 FD-CES实验台功能模块介绍.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第5章 存储系统.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第4章 汇编语言程序设计 4.1 汇编语言源程序 4.2 伪指令(4.2.1-4.2.3).ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第3章 8086/8088指令系统 3.3 8086/8088指令系统 3.3.2 减法指令.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第6章 输入输出和中断技术.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)总复习.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第4章 汇编语言程序设计 4.2 伪指令(4.2.4-4.2.6)4.3 DOS系统功能调用介绍 4.4 汇编语言程序设计基础.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第8章 模拟量的输入输出.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第7章 常用数字接口电路.ppt
- 广东白云学院:《单片机原理与应用》教学大纲.doc
- 《数据把掘概念与技术》第九章(9-3) 文本检索.ppt
- 《数据把掘概念与技术》第九章 根据内容检索.ppt
- 《数据把掘概念与技术》第一章 数据挖掘的概念.ppt
- 《数据把掘概念与技术》第七章(7-4) 修剪决策树.ppt
- 《数据把掘概念与技术》第七章 决策树和决策规则.ppt
- 《数据把掘概念与技术》第三章 数据归约.ppt
- 《数据把掘概念与技术》第二章 数据准备.ppt
- 《数据把掘概念与技术》第五章(5-1) 统计推断.ppt
- 《数据把掘概念与技术》第五章(5-5) 方差分析.ppt
- 《数据把掘概念与技术》第八章(8-1) 购物篮分析.ppt
- 《数据把掘概念与技术》第八章(8-6) 多维关联规则挖掘.ppt