微机原理与接口课件32位乘法
微机原理与接口技术课件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位微机原理与接口技术冯·诺伊曼机具有基本特点;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位乘法
一.实验题目:用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页
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
清华大学微机原理32位微处理器
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,但 是经过 统计学 和成功 人士的 分析得 出,乐 观是成 功的第 三要素 。
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端口。
微机原理与接口技术优秀课件
第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
:
〔例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
版 社
半导体读写存储器是挥发性(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位乘法
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
微 机
〔例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位无符号数乘法程序实验二:码制转换程序设计<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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析: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