微机原理与接口课件32位乘法

合集下载

微机原理与接口技术课件PPT

微机原理与接口技术课件PPT

汇编语言的优点
汇编语言具有高效、可移植性、 可维护性等优点,适用于编写操 作系统、编译器等关键软件。
汇编语言的缺点
汇编语言编写复杂,容易出错, 且可移植性较差,需要针对不同 的计算机体系结构进行修改。
高级语言
01
高级语言的定义
高级语言是一种抽象程度更高的 编程语言,它使用更接近自然语 言的语法和语义。
实验提供参考。
THANKS FOR WATCHING
感谢您的观看
串行接口的数据传输速率比并行 接口慢,但只需要一根数据线, 因此成本较低。
03
串行接口的常见标准包括RS-232 、RS-422和USB。
04
中断控制器
中断控制器是微机中的一 种重要组件,它负责管理 计算机系统中断的处理。
中断控制器可以管理硬件 设备的中断请求,例如键 盘、鼠标和计时器等。
ABCD
并行接口通常用于连接打印机、磁盘驱动器等高速设备, 因为这些设备需要快速传输大量数据。
并行接口的常见标准包括ECP、EPP和USB。
串行接口
01
串行接口是一种数据传输方式, 它通过单个数据线逐位传输数据 。
02
串行接口通常用于连接鼠标、调 制解调器等低速设备,因为这些 设备不需要快速传输大量数据。
语音识别和图像处理
利用微机原理与接口技术,可以实现语音识 别和图像处理等功能,提高办公自动化水平 。
在家用电器中的应用
1 2 3
智能家居控制
微机原理与接口技术可以用于智能家居控制,实 现家用电器的远程控制和自动化控制。
电视和音响设备控制
通过微机原理与接口技术,可以实现电视和音响 设备的智能控制,提供更加便捷和智能的娱乐体 验。

微机原理及接口技术课件

微机原理及接口技术课件
外存储器是微机系统中的低速存储器, 用于长期存储大量数据和程序。
中央处理器是微机系统的核心,负责执 行程序中的指令。
内存储器是微机系统中的高速存储器, 用于存储程序和数据。
微机系统的软件结构
微机系统的软件结构包括系统软件和 应用软件。
应用软件是根据特定需求开发的软件 ,如办公软件、图像处理软件等。
通过微机接口实验,使 学生掌握微机接口的基 本原理和应用技术,培 养学生对微机系统的综 合分析和设计能力。
微机接口实验通常包括 以下几个方面的内容
通过实验箱或实验板等 硬件设备,让学生了解 并掌握各种硬件接口的 工作原理和性能特点。
通过编写软件程序,让 学生掌握各种输入/输出 控制方式、中断处理、 DMA传输等软件接口的 控制原理和编程方法。
计算机的基本组成 包括运算器、控制 器、存储器、输入 输出设备。
控制器是计算机的 指挥中心,负责控 制和协调计算机的 各个部件。
输入输出设备用于 与外部进行信息交 流,如键盘、鼠标 和显示器等。
微机系统的硬件结构
微机系统的硬件结构包括中央处理器、 内存储器、外存储器、输入输出设备等 。
输入输出设备用于与外部进行信息交流 ,如键盘、鼠标和显示器等。
接口技术
包括串行接口、并行接口、USB接口等技术 ,实现微机与其他设备的通信。
C/C语言
一种高级编程语言,广泛应用于微机应用系 统的开发。
中断技术
实现微机应用系统中断处理和任务调度的重 要技术。
06
CATALOGUE
微机接口实验及课程设计
微机接口实验的目的与内容
目的
内容
硬件接口实验
软件编程实验
综合实验

串行接口的实现

32位微机原理与接口技术

32位微机原理与接口技术

32位微机原理与接口技术冯·诺伊曼机具有基本特点;1.计算机由运算器、控制器、存储器、输入设备与输出设备五部分组成。

2.采用存储程序的方式,程序和数据放在同一个存储器中,指令和数据一样可以送到运算器运算,即由指令组成的程序是可以修改的。

3.数据以二进制码表示。

4.指令由操作码和地址码组成。

8086微处理器的功能结构指令周期=取指周期+执行周期1.执行部件EU1)4个16位通用寄存器AX BX CXDX2)4个16位专用寄存器SP(堆栈指针)BP(基址指针)SI (源变址寄存器)DI(目的变址寄存器)3)16位标志寄存器状态标志有6个:CF、PF、AF、ZF、SF和OF进位标志CF 奇偶标志PF 辅助进位标志AF 零标志ZF符号标志SF 溢出标志OF控制标志有3个:TF、IF和DF跟踪标志TF 中断允许标志IF 方向标志df4)算术逻辑单元ALU 可以完成多种运算,包括加、减、乘、除等算术运算和与、或、非等逻辑运算。

2.总线接口部件BIU1)6字节的指令队列2)4个16位段地址寄存器CS、DS、SS、ES。

3)16位指令指针寄存器IP4)20位地址加法器由16位段地址寄存器和某个16位偏移地址相加,形成20位的地址,访问外部存储器。

U流水线和V流水线每条流水线都有自己的地址生成器、ALU。

U流水线可执行所有的整数和浮点指令(浮点指令会被提交给浮点单元实现);V流水线只能能执行简单的整数指令和一条异常的FXCH 指令。

IA-32微处理器的工作模式1.实地址模式32位微处理器完全模仿16位微处理器,只是功能稍强、速度更快。

通过修改控制寄存器CR0中的PE控制位,可以切换到保护模式。

2.保护模式该模式是处理器的原生模式,可访问4GB字节的物理存储空间,支持段、页两级保护机制,段有4个特权级,页面有2 个特权级。

0级为最高特权级,3为最低特权级。

可防止特权级低的程序或任务访问特权级高的段。

3.虚拟8086模式该模式不是一种专门的处理器工作模式,而是保护模式下的一种功能。

32位乘法

32位乘法

一.实验题目:用16位乘法指令完成32位无符号数乘法二.参考文献:《微型计算机原理与接口技术》第四版---中国科学技术大学出版周荷琴吴秀清编《计算机原理上机指导书》聂聪编三.实验原理:使用MUL指令,完成双字无符号数乘法程序,要求乘数和被乘数从键盘输入,结果显示于屏幕上。

如图所示:四. 软件工具:汇编器TASM,调试程序TUBOR DEBUGGER。

五.程序流程图六.程序data segment ;定义数据段tishi1 db 'please input a number(8):',0dh,0ah,'$'tishi2 db 'please input a number(8):',0dh,0ah,'$'tishi3 db 'the result is :$'chengshu1 db 12 dup(?)chengshu2 db 12 dup(?)result db 8 dup(?)result1 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'$'data endscode segment ;代码段assume cs:code,ds:datamain proccall shuru ;调用输入call jisuan ;调用计算call shuchumov ah,4ch ;用于结束程序int 21hmain endpshuru proc ;输入乘数mov ax,datamov ds,axlea dx,tishi1 ;显示tishi1内容mov ah,09hint 21hmov dx,offset chengshu1 ;以字符串形式输入数据存放到chengshu1中,最多八个字节mov bx,dxmov [bx], byte ptr 9mov ah,0ahint 21hmov ax,datalea dx,tishi2mov ah,09hint 21hmov dx,offset chengshu2mov bx,dxmov [bx], byte ptr 9mov ah,0ahint 21hretshuru endpingaixie proc ;修改数如的数据,如果输入的是数字,ASCII减30h,否则减37hcmp ah,3ahjb bsub ah,37hjmp aa: cmp al,3ahjb csub al,37hjmp db: sub ah,30hjmp ac: sub al,30hjmp dd: mov cl,4shl al,clshr ax,clretingaixie endpjisuan procmov di,offset chengshu1 ;把输入和输出的数进行转换,然后放回到chengshu1,chengshu2中mov al,byte ptr [di+3]mov ah,byte ptr [di+2]call ingaixiemov byte ptr [di+2],almov al,byte ptr [di+5]mov ah,byte ptr [di+4]call ingaixiemov byte ptr [di+3],almov al, byte ptr [di+7]mov ah,byte ptr [di+6]call ingaixiemov byte ptr [di+4],al mov al,byte ptr [di+9]mov ah,byte ptr [di+8]call ingaixiemov byte ptr [di+5],almov di,offset chengshu2 mov al,byte ptr [di+3]mov ah,byte ptr [di+2]call ingaixiemov byte ptr [di+2],almov al,byte ptr [di+5]mov ah,byte ptr [di+4]call ingaixiemov byte ptr [di+3],almov al, byte ptr [di+7]mov ah,byte ptr [di+6]call ingaixiemov byte ptr [di+4],al mov al,byte ptr [di+9]mov ah,byte ptr [di+8]call ingaixiemov byte ptr [di+5],almov di,offset chengshu1 mov al,byte ptr [di+3]mov ah,byte ptr [di+2] mov bl,byte ptr [di+5] mov bh,byte ptr [di+4]mov di,offset chengshu2 mov cl,byte ptr [di+3]mov ch,byte ptr [di+2] mov dx,0mul cx ;高高相乘push dxmov ax,bxmov dx,0mul cx ;高低相乘push dxpush axmov di,offset chengshu1mov al,byte ptr [di+3]mov ah,byte ptr [di+2]mov bl,byte ptr [di+5]mov bh,byte ptr [di+4]mov di,offset chengshu2mov cl,byte ptr [di+5]mov ch,byte ptr [di+4]mov dx,0mul cx ;低高相乘push dxpush axmov ax,bxmov dx,0mul cx ;低低相乘push dxpush axmov di,offset resultpop ax ;把结果按方案形式累加pop bxmov byte ptr [di+7],almov byte ptr [di+6],ahmov byte ptr [di+5],blmov byte ptr [di+4],bhpop axadd [di+5],aladc [di+4],ahadc [di+3],bladc [di+2],bhpop axpop bxadd [di+5],aladc [di+4],ahadc [di+3],bladc [di+2],bhpop axpop bxadc [di+1],bladc [di],bhadd [di+3],aladc [di+2],ahadc [di+1],byte ptr 0adc [di], byte ptr 0retjisuan endpshuchu proc ;输出结果mov di,offset resultmov ax,0mov al,byte ptr [di]call outgaixiemov di,offset result1mov byte ptr [di],ahmov byte ptr [di+1],almov di,offset resultmov ax,0mov al,byte ptr [di+1]call outgaixiemov di,offset result1mov byte ptr [di+2],ah mov byte ptr [di+3],almov di,offset resultmov ax,0mov al,byte ptr [di+2] call outgaixiemov di,offset result1mov byte ptr [di+4],ah mov byte ptr [di+5],almov di,offset resultmov ax,0mov al,byte ptr [di+3] call outgaixiemov di,offset result1mov byte ptr [di+6],ah mov byte ptr [di+7],almov di,offset resultmov ax,0mov al,byte ptr [di+4] call outgaixiemov di,offset result1mov byte ptr [di+8],ah mov byte ptr [di+9],almov di,offset resultmov ax,0mov al,byte ptr [di+5] call outgaixiemov di,offset result1mov byte ptr [di+0ah],ah mov byte ptr [di+0bh],almov di,offset resultmov ax,0mov al,byte ptr [di+6]call outgaixiemov di,offset result1mov byte ptr [di+0ch],ahmov byte ptr [di+0dh],almov di,offset resultmov ax,0mov al,byte ptr [di+7]call outgaixiemov di,offset result1mov byte ptr [di+0eh],ahmov byte ptr [di+0fh],almov ax,datamov ds,axlea dx,tishi3mov ah,09int 21hlea dx,result1mov ah,09hint 21hretshuchu endpoutgaixie proc ;把要输出的转换成字符形式mov cl,4shl ax,clshr al,clcmp ah,0ahjb a2add ah,37ha1: cmp al,0ahjb a3add al,37hreta2: add ah,30hjmp a1a3: add al,30hretoutgaixie endpcode endsend main测试数据:11111111*11111111=0123456787654321AAAAAAAA*AAAAAAAA=71C71C70E38E38E40000000A*00000001=000000000000000A。

清华大学微机原理32位微处理器PPT文档73页

清华大学微机原理32位微处理器PPT文档73页
39、没有不老的誓言,没有不变的承 诺,踏 上旅途 ,义无 反顾。 40、对时间的价值没有没有深切认识 的人, 决不会 坚韧勤 勉。
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
清华大学微机原理32位微处理器
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,但 是经过 统计学 和成功 人士的 分析得 出,乐 观是成 功的第 三要素 。

32位乘法器

32位乘法器

32位乘法器逻辑原理图:
实验原理:乘法可以通过逐渐项相加原理来实现。

从被乘数的最低位开始,若为1则乘数左移后与上一次的和相加;若为0左移后以全零相加,直至被乘数的最高位。

32位移位相加乘法器运算数据时序图:
工作原理:clr信号的上跳沿及其高电平有两个功能,即模块regsht清零和被乘数dina[31.。

0]向移位寄存器shft加载;它的低电平则作为乘法使能信号,clk为乘法时钟信号。

当被乘数加载于32位右移寄存器shft后,随着每一时钟节拍,最低位在前,由低位到高位逐位移出。

当为1时,4位乘法器and32打开,32位乘数din[31..0]在同一节拍进入加法器,与上一次存在regsht的数相加,其和在下一时钟节拍的上升沿被锁进此锁存器。

而当被乘数的移出位为0时,此and32全零输出。

如此反复,直至32个时钟脉冲后,最后乘积完整出现在regsht端口。

微机原理与接口技术优秀课件

微机原理与接口技术优秀课件
存器以及存储单元都集成在一个芯片中,体积特别小 功耗低,一般为几十毫瓦(mW)
第5章 微机的存储系统
5.2 半导体存储器的基本知识
5.2.2 半导体存储器芯片的结构

AB 地

址 译 码





存储体
读写控制 CB
I/O
控 DB



第5章 微机的存储系统
5.2 半导体存储器的基本知识
5.2.2 半导体存储器芯片的结构
只读 可编程只读存储器PROM

存储器 可擦除可编程只读存储器EPROM ROM 电可擦可编程只读存储器EEPROM

快闪存储器Flash Memory

磁表面 存储器
磁盘存储器 磁带存储器
硬盘 软盘
光介质存储器
第5章 微机的存储系统
5.1 存储器概述
5.1.1 存储器的分类——按信息的可保存性分类
➢ 价格/位——常用每字节或每MB成本表示,即C=价格/容量
➢ 可靠性——通常用平均无故障工作时间(Mean Time Between Failures,简称MTBF)即两次故障之间的平均时间来衡量。
第5章 微机的存储系统
5.1 存储器概述
5.1.3 存储系统的概念
存储系统由存放程序和数据的各类存储设备及相关软件构成。
➢ 辅助存储器——又称外部存储器,主要用来存放当前暂时不 参加运算的程序和数据,通常CPU不直接访问辅存。
➢ 高速缓冲存储器(Cache)——用于弥补计算机内部各器件之间 的速度差异。主要采用双极型(TTL)半导体存储器件。
第5章 微机的存储系统
5.1 存储器概述

32位微机原理与接口技术钱晓捷课件04

32位微机原理与接口技术钱晓捷课件04

:
〔例4-3〕位测试程序-2
; 数据段 ' !',0 ' !',0
; 代码段 ,56h ,02h
; 假设一个数据 ; 测试D1位(D1=1,其他位为0) ; D1=1条件成立,转移
; D1=0,显示没有准备好
; 跳转过另一个分支体!
:
; 显示准备好
:
〔例4-4〕奇校验程序
; 键盘输入, =返回值 ; 回车换行(用于分隔) ; 以二进制形式显示数据 ; 回车换行(用于分隔) ,7 ; 最高位置“0”、其他位不变 ; 同时标志反映“1”的个数
显示! : :
; 余数为0,即=0,不需要处理,转移到
,1
; 进行加1操作
; 显示结果
jnc goeven
何不合二为一?
〔例4-2〕个数折半程序-3
,887
; 假设一个数据
,1
; 数据右移进行折半
,0
; 余数==1,进行加1操作
;余数==0,没有加1 ; 显示结果
消除分支
,888 ,1 ,1
; 假设一个数据
; 个数加1
; 数据右移进行折半
; 显示结果
改进算法
〔例4-3〕位测试程序-1
; 数据段 ' !',0 ' !',0
; 代码段 ,56h ,02h
; 假设一个数据 ; 测试D1位(D1=1,其他位为0) ; D1=0条件成立,转移
; D1=1,显示准备好
; 跳转过另一个分支体!
:
; 显示没有准备好
指令
本章学习控制转移类指令
1. 转移范围
➢段内转移 ➢在当前代码段范围内的程序转移 ➢不需更改,只要改变(偏移地址) ➢近转移():32位近转移32,16位近转移16 ➢短转移():转移范围在127~-128字节 ➢段间转移 ➢从当前代码段跳转到另一个代码段 ➢需要更改(段地址)和(偏移地址) ➢远转移(): 48位远转移32,32位远转移

32位微机原理与接口技术钱晓捷课件06

32位微机原理与接口技术钱晓捷课件06

版 社
半导体读写存储器是挥发性(Volatile)RAM,即
断电后原保存信息丢失
半导体读写存储器=随机存取存储器地址RAM
微 机
1. 主要类型

理 与
SRAM(静态RAM:Static RAM)
接 口
以触发器为基本存储单元
技 术
不需要额外的刷新电路
·

速度快,但集成度低,功耗和价格较高
5
版 DRAM(动态RAM:Dynamic RAM)
机 械
以单个MOS管为基本存储单元


要不断进行刷新(Refresh)操作

版 社
集成度高、价格低、功耗小,但速度较SRAM慢
微 机
2. 存储结构

理 与
存储器芯片具有大量存储单元
接 口
每个存储单元拥有一个地址

术 ·
存储1/4/8/16/32位数据
第 5
存储器芯片结构:

机 存储单元数×每个存储单元的数据位数

理 与
层次结构解决存储器件的容量、速度和价格矛盾
接 口
出色效率来源于存储器访问的局部性原理:
技 术
处理器访问存储器时,所访问的存储单元在一段
· 第
时间内都趋向于一个较小的连续区域中
5 版
空间局部:紧邻被访问单元的地方也将被访问
机 时间局部:刚被访问的单元很快将再次被访问

工 程序运行过程中,绝大多数情况都能够直接从快
· 第
耗大、价格高等特点,主要用于高速存储场合
5

“MOS型”器件:集成度高、功耗低、价格便宜,

微机原理与接口课件32位乘法

微机原理与接口课件32位乘法

DATA STACK STACK
DW 4 DUP(?)
ENDS
;定义乘积,低字在前
SEGMENT PARA Sห้องสมุดไป่ตู้ACK ‘STACK’ DB 100 DUP(?) ENDS
SEGMENT CS: CODE,DS:DATA,SS:STACK PROC FAR PUSH DS ; DS中包含的是程序段前缀的段地址 MOV AX,0 PUSH AX ; 设置返回至DOS的段值和偏移量 MOV AX, DATA MOV DS, AX ; 置段寄存器初值 MOV BX, 0 MULU32: MOV AX, MULNUM[BX] ; B→AX MOV SI, MULNUM[BX+4] ; D→SI MOV DI, MULNUM[BX+6] ; C→DI
CODE ASSUME START BEGIN:
MUL MOV MOV MOV MUL ADD ADC
MOV MOV MOV MUL ADD ADC
SI ; B×D PRODUCT[BX], AX ; 保存部分积1 PRODUCT[BX+2], DX AX, MULNUM[BX+2] ; A→AX SI ; A×D AX, PRODUCT[BX+2] DX, 0 ; 部分积2的一部分与部分 ; 积1的相应部分相加 PRODUCT[BX+2], AX PRODUCT[BX+4], DX ; 保存 AX, MULNUM[BX] ; B→AX DI ; B×C AX, PRODUCT[BX+2] ;与部分积3的相应部分相加 DX, PRODUCT[BX+4]
MOV PRODUCT[BX+2], AX MOV PRODUCT[BX+4], DX PUSHF ; 保存后一次相加的进位标志 MOV AX, MULNUM[BX+2] ; A→AX MUL DI ; A×C POPF ADC AX, PRODUCT[BX+4] ; 与部分积4的相应部分相加 ADC DX, 0 MOV PRODUCT[BX+4], AX MOV PRODUCT[BX+6], DX RET START ENDP CODE ENDS END BEGIN

32位微机原理与接口技术钱晓捷课件03

32位微机原理与接口技术钱晓捷课件03

微 机
〔例3-1〕数据表达程序-2

理 与
00000027 0D 0A 0
接 口
crlf
byte 0dh,0ah,0
技 术
= 0000000A
· 第
minint = 10
5 版
= 000000FF
机 械
maxint equ 0ffh
工 业
0000002A 0A 0F FA F5
出 版
const5
byte minint,minint+5
2. ASCII(美国标准信息交换码)

理 与
➢标准ASCII码用7位二进制编码,有128个
接 口
➢不可显示的控制字符:前32个和最后一个

术 回车CR:0DH 换行LF:0AH 响铃BEL:07H
·
第 5
➢可显示和打印的字符:20H后的94个编码

数码0~9:30H~39H


大写字母A~Z:41H~5AH
5 版
再取反其他位得到反码

最后加1就是补码
械 工
➢真值:32,机器数:00100000B=20H

出 版
➢真值:-32,机器数:
社 [-32]原码=10100000B=A0H
[-32]反码=11011111B=DFH
[20H]补码=11100000B=E0H
微 机
3.1.3 字符的编码

理 与
➢在计算机中,各种字符需要用若干位的二进
微 机
1. 二进制

理 与
➢便于计算机存储及物理实现
接 口
➢特点:逢二进一,由0和1两个数码组成,基

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告姓名:班级:学号:时间:实验名称:基本汇编语言程序设计实验一:两个32位无符号数乘法程序实验二:码制转换程序设计<1>十六进制到ASCII<2>从二进制到ASCII一、程序流程图1、两个32位无符号数乘法程序:2、十六进制到ASCII二、程序的实现:1、实验一程序:NAME 32 BIT MULTIPLYDATA SEGMENTMULNUM DW 0000,0FFFFH,0000,0FFFFH,4 DUP(?) DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA BX,MULNUMMULU32: MOV AX,[BX]MOV SI,[BX+4]MOV DI,[BX+6]MUL SIMOV [BX+8],AXMOV [BX+0AH],DXMOV AX,[BX+2]MUL SIADD AX,[BX+0AH]ADC DX,0MOV [BX+0AH],AXMOV [BX+0CH],DXMOV AX,[BX]MUL DIADD AX,[BX+0AH]ADC DX,[BX+0CH]MOV [BX+0AH],AXMOV [BX+0CH],DXPUSHFMOV AX,[BX+2]MUL DIPOPFADC AX,[BX+2]ADC DX,0MOV [BX+0CH],AXMOV [BX+0EH],DXRETSTART ENDPCODE ENDSEND START2、实验二的程序:1)NAME HEX_CHANGE_TO_ASCIIDATA SEGMENTL1 DW 2STRING DB 34H,98HL2 DW?BUFFER DB 2*2 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,L1LEA BX,STRINGLEA SI,BUFFERMOV L2,CXMOV CX,AXAGAIN: MOV AL,[BX]MOV DL,ALAND AL,0FHCALL CHANGEMOV AL,DLPUSH CXMOV CL,4SHR AL,CLPOP CXCALL CHANGEINC BXRETSTART ENDPCHANGE PROCCMP AL,10JL ADD_0ADD AL,'A'-'0'-10ADD_0: ADD AL,'0'MOV [SI],ALINC SIRETCHANGE ENDPCODE ENDSEND START2)NAME BINARY_TO_ACSIIDATA SEGMENTNUM DW 4F78HSTRING DB 16 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA DI,STRINGMOV CX,LENGTH STRINGPUSH DIPUSH CXMOV AL,30H;REP STOWPOP CXPOP DIMOV AL,31HMOV BX,NUMAGAIN: RCL BX,1JNC NEXTMOV [DI],ALNEXT: INC DILOOP AGAINRETSTART ENDPCODE ENDSEND START三、实验感想:在实验的过程中,照着书上慢慢的去了解那些代码的含义,并且将代码出现的error改错,后来回到寝室发现在学校的电脑没有了error 的程序而在自己的电脑运行时出现error,后来又将程序修改发现了最后部分的begin改为start就能运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例 编写完整的汇编语言程序,用8086的16位无符号数 乘法指令实现两个32位无符号数的乘法运算。
算法分析:8086没有32位无符号数乘法指令,需借助于 16位无符号数乘法指令做4次乘法,然后把部分积相加, 如下图所示。 A × C B D
部分积1 部分积2 部分积3 部分积4 最后乘积
+
B × D A × D B × C A × C AB × CD
CODE ASSUME START BEGIN:
MUL MOV MOV MOV MUL ADD ADC
MOV MOV MOV MUL ADD ADC
SI ; B×D PRODUCT[BX], AX ; 保存部分积1 PRODห้องสมุดไป่ตู้CT[BX+2], DX AX, MULNUM[BX+2] ; A→AX SI ; A×D AX, PRODUCT[BX+2] DX, 0 ; 部分积2的一部分与部分 ; 积1的相应部分相加 PRODUCT[BX+2], AX PRODUCT[BX+4], DX ; 保存 AX, MULNUM[BX] ; B→AX DI ; B×C AX, PRODUCT[BX+2] ;与部分积3的相应部分相加 DX, PRODUCT[BX+4]
A B C D 例如,求:0001 8000H*0001 0FFFH=0000000197FE8000H 完整的汇编语言程序如下:
NAME DATA MULNUM A与乘数D、C MULTIPLY_32BIT SEGMENT DW 8000H,0001H,0FFFH,0001H
;定义被乘数B、
PRODUCT
MOV PRODUCT[BX+2], AX MOV PRODUCT[BX+4], DX PUSHF ; 保存后一次相加的进位标志 MOV AX, MULNUM[BX+2] ; A→AX MUL DI ; A×C POPF ADC AX, PRODUCT[BX+4] ; 与部分积4的相应部分相加 ADC DX, 0 MOV PRODUCT[BX+4], AX MOV PRODUCT[BX+6], DX RET START ENDP CODE ENDS END BEGIN
DATA STACK STACK
DW 4 DUP(?)
ENDS
;定义乘积,低字在前
SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) ENDS
SEGMENT CS: CODE,DS:DATA,SS:STACK PROC FAR PUSH DS ; DS中包含的是程序段前缀的段地址 MOV AX,0 PUSH AX ; 设置返回至DOS的段值和偏移量 MOV AX, DATA MOV DS, AX ; 置段寄存器初值 MOV BX, 0 MULU32: MOV AX, MULNUM[BX] ; B→AX MOV SI, MULNUM[BX+4] ; D→SI MOV DI, MULNUM[BX+6] ; C→DI
相关文档
最新文档