微机原理实验指导书

合集下载

微机原理实验指导书

微机原理实验指导书

实验一初级程序的编写与调试一、实验目的1、熟练掌握的DEBUG常用命令,学会用DEBUG调试程序;2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出;3、掌握各种寻址方法以及简单指令的执行过程。

二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间单元,用DEBUG调试程序进行汇编与调试。

2、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H—304H连续单元顺序装入0AH、OBH、0CH、0DH、0EH。

在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程。

当每条数据传送完毕时,AX中的内容是什么。

程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3、设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成。

三、实验要求1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,对程序结果的分析等。

2、本实验要求在PC机上完成。

3、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序,调试程序,执行程序。

4、编程提示:(1)、实验内容1将两个寄存器内容进行交换时,必须有一个中间寄存器才能进行内容的交换。

如果用堆栈作为中间存储单元,必须遵循先进后出的原则。

(2)、实验内容2[1] 其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。

[2] SI和BX的初值可在DEBUG的状态下,用R命令装入,也可以在程序中用指令来完成。

[3] 用T命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态,也可用R命令直接调出寄存器,来检查各寄存器内容是否正确。

微机原理实验学生实验指导书

微机原理实验学生实验指导书

微型计算机原理实验指导书河北大学电子信息工程学院2017年10月目录实验一系统认识及编程初步实验 (1)实验二输入输出程序设计实验 (7)实验三8255并行接口实验 (9)实验四8259中断控制实验 (13)实验五8254定时/计数器应用实验 (19)实验六综合实验 (24)实验一系统认识及编程初步实验一、实验目的1. 掌握TD系列微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

2. 掌握使用运算类指令编程及调试方法。

3. 学习使用软件监视变量的方法。

二、实验设备PC机一台,TD-PITE实验装置一套。

三、实验内容(一)基础实验1. 系统认识实验编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

2. 运算编程实验80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1-1所示的数据类型进行算术运算。

本实验以二进制双精度加法运算为例,计算X+Y=Z,将结果Z存入某存储单元。

表1-1 数据类型算术运算表(二)提高实验1. 在系统认识实验中,编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。

通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。

2. 在运算编程实验中,求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H。

四、实验步骤(一)系统认识实验1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言和寄存器类型,这里我们设置成“汇编语言”和“16位寄存器”,如图1-1、图1-2所示。

设置选择后,下次再启动软件,语言环境保持这次的修改不变。

图1-1 语言环境设置界面图1-2 寄存器设置界面3. 语言和寄存器选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图1-3所示。

微机原理实验指导书 何小海 严华

微机原理实验指导书 何小海 严华

实验一数据传送一、实验目的熟悉星研集成环境软件的使用方法。

熟悉Borland公司的TASM编译器熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容1、熟悉星研集成环境软件。

2、编写程序,实现数据段的传送、校验。

使用汇编语言,将数据段中3000H~30FFH单元的内容传送给实验仪B4区的61C256的2000H~20FF中;B4区的61C256在I/O设备区,使用IOR、IOW读写;再将它传送回数据段的6000H~60FFH中。

三、程序流程图(学生根据实验内容设计)四、实验步骤在DS段内3000H~30FFH中输入数据;使用单步、断点方式等调试程序,检测DS段内6000H ~60FFH中的内容。

熟悉查看特殊功能寄存器、CS段、DS段的各种方法。

五、程序清单(参考)本实例的源程序如下:.MODEL TINY ;memory mode : tiny.STACK 100 ;堆栈.CODE ;开始程序段START: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV CX,100HMOV SI,3000HMOV DX,2000HSTART1: MOV AL,[SI]OUT DX,ALINC SIINC DXLOOP START1MOV DI,6000HMOV DX,2000HMOV CX,100HSTART2: IN DX,ALMOV [DI],ALINC DIINC DXLOOP START2SJMP $Move ENDPEND START六、思考题编写一个程序,将数据段中2000H~20FFH单元的内容传送给数据段的6000H~60FFH中。

实验内容:1、用所学过的寻址方式编程实现将存储单元DS:1000H单元的内容送到DS:2020H单元。

2、设各寄存器及存储单元的内容如下:(DS)=0500H,(BX)=0010H,(SI)=0001H,(05010)=12H,(05011)=34H,(05012)=56H,(05013)=78H,(05120)=ABH,(05121)=CDH,(05122)=EFH,说明下列各条指令执行完后AX寄存器中的内容。

微机原理实验指导书

微机原理实验指导书

实验一 DOS命令与汇编源程序输入、汇编、连接、运行一、实验目的掌握在计算机上运行汇编语言程序的整个操作过程。

学会将自己编制的汇编语言源程序用EDIT编辑程序输入计算机并存盘;学会用MASM 宏汇编程序对汇编语言源程序进行汇编形成二进制目标文件;学会用LINK连接程序对二进制目标文件连接形成可执行文件;学会运行经汇编和连接后形成的可执行文件;学会用DEBUG调试程序运行和调试可执行文件。

二、实验设备1、PC系列不低于80286档次的微型机;2、DOS3.3以上版本的操作系统;3、EDIT,MASM,LINK,DEBUG执行程序。

三、实验步骤1、用EDIT编辑汇编源程序(1)MS-DOS Editor的启动与退出Editor是在DOS系统提示符下启动,其命令格式为:C:EDIT [Path] [filename]在编辑完成后,选择屏幕菜单的File命令(按“ALT+F”键)中的Exit项即可退出Editor。

(2)建立文本文件在MS-DOS Editor的屏幕菜单栏中File命令就是对文本文件的建立、存储和打印的操作。

A.建立文件(New)打开屏幕菜单栏中File下拉菜单,选择New项。

B.编辑文件将写好的汇编语言源程序输入到编辑文本区。

输入时,一行结束后按回车键(Enter)换行。

C.保存文件(Save)打开屏幕菜单栏中File下拉菜单,选择Save项在弹出的对话框中键入文件名。

如果要把文件保存到非默认路径下,则在键入文件名的同时键入路径。

D.打开文件(Open)打开屏幕菜单栏中File下拉菜单,选择Open项。

该窗口中有三个区可以选择要打开的文件:文件名区:可以直接键入要打开的文件名;文件表区:文件表中列出要打开的所有文件名,供用户选择;目录/磁盘区:键入的文件名是哪个磁盘目录中的,在该区中选择。

在Open对话框中用“Tab”或“Shift+Tab”键选择各区。

选完后按“OK”确定。

2.MASM宏汇编程序的使用方法(1)命令格式和功能命令格式:MASM文件名功能:对汇编语言源程序进行汇编形成二进制目标文件(2)操作过程在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。

微型计算机原理实验指导书

微型计算机原理实验指导书
五、拓展题
MOV、XCHG、XLAT指令的调试。
要求:用汇编命令A输入以下源程序段,用T命令单步执行,查看执行结果:寄存器或存储单元的值。。
提示:在DEBUG环境下输入程序段时要省掉立即数后面的字符“H”
1、MOV指令的调试
程序段:MOV AL, 55H
MOV AH, AL
MOV BX, 1000H
DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC
137B:010389C3 MOV BX,AX
-T=0103
AX=0020 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
(1)字母不分大小写
(2)只使用十六进制数,但没有带后缀字母“H”
(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、Debug的调入和退出
以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:
多字节/多字之间的加/减,除最低字节/最低字用ADD/SUB指令外,其余字节/字之间的加/减都要用包含进位/借位的ADC/SBB指令。
INC和DEC指令常用于修改计数器或修改指针,常用与循环处理一批数据。
CMP指令常用于比较两个数的关系,为下一步的条件转移做准备(后跟条件转移指令)。
3、常用逻辑运算指令AND/OR/NOT/XOR/TEST
SHR和SAR功能不同,虽都是将操作数右移一位或几位,但左边移出的空位分别补0和1(SHR要补0,SAR补1)。

微机原理实验指导书

微机原理实验指导书

前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。

本实验指导书是《微型计算机原理及应用》一书的配套教材。

该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的FD-SJ8088A微机实验系统,合理安排了微机实验。

全书共分二部分。

第一部分汇编语言上机操作及程序调试方法及软件部分实验第二部分FD-SJ8088A微机实验系统介绍及硬件部分实验对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示﹑思考题。

实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。

我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。

这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。

本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。

由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用中提出宝贵意见。

编者2005年8月目录实验须知 (3)第一部分汇编语言上机操作及软件部分实验实验一汇编语言上机环境的熟悉和命令使用 (4)实验二利用D E B U G命令调试程序 (7)实验三利用中断指令进行输入输出程序设计 (9)实验四汇编语言综合编程实验 (11)第二部分硬件部分实验FD88调试软件 (12)实验五简单I/O接口控制实验 (21)实验六 8255 接口控制实验 (21)实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。

2.每次实验前做好充分的预习,对所需预备知识做到心中有数。

3.实验前应编好源程序,并对调试过程、实验结果进行预测。

微机原理实验指导书

微机原理实验指导书

实验1 数据传送实验目的掌握8086指令系统的数据传送指令及8086的寻址方式利用调试工具来调试汇编语言程序实验设备PC微型计算机一台实验预习要求:复习8086指令系统的数据传送指令及8086的寻址方式学习TD.EXE的使用方法实验内容1:通过下面的程序段输入和执行来熟悉TD.EXE的使用,通过显示屏观察程序的执行情况。

练习程序段如下:MOV BL, 88HMOV CL, BLMOV AX, 9999HMOV DS:[0002H], AX操作步骤:1、启动TD.EXE方法1 直接打开BIN文件夹下TD.EXE文件,方法2 把BIN 文件夹放在根目录下,如在:D:\BIN,打开“开始—附件—命令提示符”用CD命令使当前目录为D:\BIN 然后输入TD 或TD.EXE2、输入程序段把光标移到CS:0100H处开始输入程序在光标处直接输入练习程序段,键入时屏幕上会弹出一个输入窗口,在这个窗口中输入程序段3、执行程序段按F8单步执行程序段,观察寄存器内容的变化情况和内存单元DS:[0002H]的内容变化情况实验内容2:MOV AX, 1111HMOV BX, 2222HMOV CX, 3333H第一种出栈方式PUSH AXPUSH BXPUSH CX第二种出栈方式PUSH BXPUSH CXPUSH AX第三种出栈方式PUSH CXPUSH BXPUSH AX操作步骤:1、启动TD.EXE2、输入程序段把光标移到CS:0100H处开始输入程序在光标处直接输入练习程序段,键入时屏幕上会弹出一个输入窗口,在这个窗口中输入程序段3、执行程序段按F8单步执行程序段,观察寄存器内容的变化情况和内存单元DS:[0002H]的内容变化情况实验报告要求:1、写明本次实验的执行结果,填好表1-12、设置各寄存器及存储单元的内容如下BX=0010H , SI=0001HDS:[0010H]=12H, DS:[0011H]=34H, DS:[0012H]=56H, DS:[0013H]=78H, DS:[0014H]=9AH, DS:[0015H]=0ABH, DS:[0016H]=0BCH说明下列各条指令执行完后AX寄存器中的内容,上机验证(观察寄存器和TD数据区—在窗口的左下角)并填好表1-2(注:输入下列指令前应先用MOV指令把各寄存器和在存储单元的内容设置好)(1)MOV AX, 1200H(2)MOV AX, BX(3)MOV AX, [0010H](4)MOV AX, [BX](5)MOV AX, 0006H[BX](6)MOV AX, [BX][SI](7)MOV AX, 0003H[BX][SI]实验2 算术逻辑运算及移位操作实验目的熟悉算术逻辑运算指令和移位指令的功能了解标志寄存器的各标志位的意义和指令执行对它的影响利用调试工具来调试汇编语言程序实验设备PC微型计算机一台实验预习要求:复习8086指令系统中的算术逻辑类指令和移位指令按照题目要求在实验前编写好实验中的程序段实验内容1:打开TD.EXE输入下面的程序段,观察标志寄存器区的标志位的变化,说明执行下列哪些指令时标志位变化了,哪些指令标志位没有变化(标志位变化时亮白显示),大家也可以用这操作步骤:1、启动TD.EXE2、输入程序段3、把光标移到CS:0100H处开始输入程序在光标处直接输入练习程序段,键入时屏幕上会弹出一个输入窗口,在这个窗口中输入程序段4、执行程序段按F8单步执行程序段,观察寄存器内容的变化情况和各标志位的变化情况实验报告要求:1、填好表2-12、说明ADD SUB AND OR NOT 指令对标志位的影响实验3 程序设计、调试和DOS功能调用实验目的熟悉在PC上汇编程序的建立、汇编、连接、执行、调试的全过程学习提示信息的显示和传送指令、加减1指令和串操作指令的用法。

微机原理实验指导书

微机原理实验指导书

实验一数据传送一、实验目的1、熟悉SH51仿真器的使用方法。

2、练习设计简单的程序。

3、掌握8031片内RAM和片外RAM的数据传送的方法,从而了解这两部分存储器的特点二、实验设备和器件PC一台、DP-51PROC单片机实验仪一台、仿真器一台。

三、实验内容将8031内容RAM40H—4FH置初值00H—0FH,然后将40H—4FH 的内容传送到外RAM4800H—480FH,再将4800H—480FH传回到内部RAM50H—5FH。

设置断点B1、B2、B3,每运行到断点时检查相应的CPU现场和存储单元的内容。

四、实验步骤1、向机器输入程序2、运行程序至第一个断点B1,检查内容RAM40H—4FH单元的内容及累加器A 的内容;3、运行程序至第二个断点B2,检查RAM4800H—480FH单元的内容及累加器A、数据指针DPTR的内容;4、运行程序至第三个断点B3,检查内容RAM50H—5FH单元的内容及累加器A、数据指针DPTR的内容;五、实验程序ORG 0000HSTART: LJMP MAINORG 0040HMAIN: MOV R0, #40HMOV R2, #10HCLR AA1: MOV @R0, AINC R0INC ADJNZ R2, A1 B1: MOV R0, #40HMOV DPTR, #4800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2, A2B2: MOV R0, #50HMOV DPTR, #4800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC R0INC DPTRDJNZ R2, A3B3: SJMP $END实验二并行口一、实验目的:通过实验了解8031并口输入方式和输出方式的工作原理和编程方法。

二、实验设备及器件:PC一台、DP-51PROC单片机实验仪一台、仿真器一台。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微型计算机原理与应用实验指导书上海大学通信学院2010 年 4 月PC微机原理实验一一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的功能。

二、要求:在PC机上完成下列程序的调试运行,并写出运行结果。

1.DEBUG的基本操作:(详细容请参阅教材“4.5程序的调试,P173”和“附录F调试程序DEUBG的使用,P499”)(1)从WINDOWS进入DOS之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R命令,查看和记录CPU各个寄存器的容:-R回车看到什么?(3)输入A命令,汇编下面的字符“WINDOWS”显示程序:-A100 ;从偏移地址是0100H处开始写指令MOV AH,2MOV DL, 57 ;57H 是“W”的ASCII码INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能;这3句合起来的功能是:显示DL中的字符MOV DL, 49INT 21MOV DL, 4EINT 21MOV DL, 44INT 21MOV DL, 4FINT 21MOV DL, 57INT 21MOV DL, 53INT 21INT 3 ;功能是产生一个断点,不要省略(4)输入U命令反汇编上面的程序:-U 100问:这里100代表什么?(5)输入G命令连续运行上面的程序,记录运行结果:-G=100(6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45:-E 103 回车(以下同)-E 107-E 10B-E 10F-E 113-E 117-E 11B(7)输入D命令查看程序机器码的存放情况:-D 100 11E ;看从100开始到11E的机器码(8)输入G命令再连续运行程序,并记录运行结果:-G=100(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车注意:下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改:例如:CS:0100 B300 MOV BL,00102 53 PUSH BX0103 B220 LP1: MOV DL,20要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作:-A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。

如果要查看0100以后的指令及相应的机器代码,可以-U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。

“-U ”是反汇编若发现有误用,用“-A XXXX 回车”,重打这条指令即可2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。

参考源程序(DEBUG调试环境中,源程序的十六进制数后面不写H):CS:0100 B300 MOV BL,00102 53 PUSH BX0103 B220 LP1: MOV DL,200105 B402 MOV AH,020107 CD21 INT 210109 5B POP BX010A 88D8 MOV AL,BL010C FEC0 INC AL010E 3C1B CMP AL,1B0110 7502 JNZ LP2(0114) ;不能写LP2,应写01140112 B001 MOV AL,010114 88C3 LP2: MOV BL,AL0116 53 PUSH BX ;0117 0440 ADD AL,400119 88C2 MOV DL,AL011B B402 MOV AH,02011D CD21 INT 21011F B9FFFF MOV CX,FFFF0122 49 DL: DEC CX0123 75FD JNZ DL(0122);不能写DL,应写01220125 EBDC JMP LP1(0103);按CTRL+C,可中止程序运行。

运行正确后,改写程序为0,1,2,3,4,5,7,8,9的循环显示。

3.编制一个3字节压缩BCD加法源程序若要实现123456+456789,根据低地址放低字节,高地址放高字节原则,请用E命令在DS:1000-1002单元正确存放被加数123456,在DS:1010-1012单元正确存放加数456789。

参考程序如下:CS:0200 BE0010 MOV SI,10000203 BF1010 MOV DI,10100206 BB2010 MOV BX,10200209 B103 MOV CL,3020B B500 MOV CH,0020D F8 CLC020E 8A04 MAD: MOV AL,[SI]0210 1205 ADC AL,[DI]0212 27 DAA0213 8807 MOV [BX],AL0215 46 INC SI0216 47 INC DI0217 43 INC BX0218 E2F4 LOOP MAD(020E)021A F4 HLT运行结果:[1020]=______ [1021]=______ [1022]=______ SI=______ DI=______ BX=_____ 相加后结果是:_________________F标志:O=______ S=______ Z=______ A=______ P=______ C=______注意:按CRT的实际显示填写。

(参考书P502)思考:DAA的作用,如果没有DAA结果会如何?4.一字节十六进制数转换为ASCII码(只考虑大写字母)用E命令在DS:1000单元中存放十六进制数5A调试运行下面程序:CS:0300 8D360010 LEA SI,[1000]0304 8D3E2010 LEA DI,[1020]0308 8A04 MOV AL,[SI]030A 240F MOV BL,AL030C 240F AND AL,0F030E E80E00 CALL CHANG(031F)0311 80E30 AND BL,F00314 B90400 MOV CX,40317 D2EB SHR BL,CL0319 88D8 MOV AL,BL031B E80100 CALL CHANG(031F)031E F4 HLT031F 3C09 CHANG: CMP AL,090321 7602 JBE AD30(0325)0323 0407 ADD AL,070325 0430 AD30: ADD AL,300327 8805 MOV [DI],AL0329 47 INC DI032A C3 RET运行结果:[1020]=______ [1021]=______思考:NOP 是空操作指令,若在ADD AL,07后面,加一条NOP,结果会如何?5、搜索字符串结束标志,统计搜索的字符个数用E命令在DS:1000开始的单元中存放若干个ASCII字符,如:30,31,32……39,0D。

(0D作为字符串结束标志),调试运行下面程序CS: 0100 8D3E0010 LEA DI,[1000]0104 B200 MOV DL,00106 B00D MOV AL,0D0108 AE AGAIN: SCASB ;书P150,AL减去[DI],INC DI0109 7404 JE DONE(010F)010B FEC2 INC DL010D EBF9 JMP AGAIN(0108)010F 8D1E2010 DONE: LEA BX,[1020]0113 8817 MOV [BX],DL0115 F4 HLT运行结果:搜索的字符个数存放在___________单元,该单元的值是___________AL=__________ BX=__________ DL=__________思考:把SCASB换成通用指令,如何改?6、编制一个将N个带符号的正、负数分开的源程序。

设N=10,用E命令在DS:1000-1009单元存放10个数(1字节):01,02,03,04,06,FF,80,81,06,07将该数据块正、负数分开,正数放在1010为首地址的单元中,负数放在1020为首地址的单元中。

参考程序:CS: 0300 BE0010 MOV SI,10000303 BF1010 MOV DI,10100306 BB2010 MOV BX,10200309 B90A00 MOV CX,000A030C AC G1: LODSB ;书P150,[SI]送给AL;INC SI020D A880 TEST AL,80030F 7503 JNZ MINUS(0314)0311 AA STOSB ;书P150,AL送给[DI];INC DI0312 EB05 JMP AGAIN(0319)0314 887DF MINUS: XCHG BX, DI0316 AA STOSB0317 87DF XCHG BX, DI0319 49 AGAIN: DEC CX030A 75F0 JNZ G1(030C)031C F4 HLT运行结果:[1010]=_______ [1011]=______ [1012]=______ [1013]=_____ [1014]=_____ [1015]=_______ [1016]=______ [1020]=______ [1021]=_____ [1022]=_____思考:二条XCHG作用是什么?如果不用STOSB(功能见书P150),程序能更简洁吗?7、编制一个将N个ASCII字符进行偶校验的源程序。

设N=8,用E命令在DS:1000—1007单元放8个ASCII字符31,32,33,34,41,42,43,44参考程序:CS: 0400 8D360010 LEA SI,[1000]0404 8D1E1010 LEA BX,[1010]0408 B90800 MOV CX,8040B AC AGAIN: LODSB040C 20C0 AND AL,AL040E 7A07 JPE NEXT(0417)0410 0C80 OR AL,800412 8807 MOV [BX],AL0414 43 INC BX0415 EB03 JMP LP1(041A)0417 8807 NEXT: MOV [BX],AL0419 43 INC BX041A 49 LP1: DEC CX041B 75EE JNZ AGAIN(040B)041D F4 HLT运行结果:1000—1007单元容:___________________________________________1010—1017单元容:___________________________________________改上述程序进行奇校验,写出运行结果:1000—1007单元容:___________________________________________1010—1017单元容:___________________________________________8、找出无序的有符号数中的最小值和最大值用E命令在DS:1000—100A中存放11个数:0A,80,84,82,83,81,01,02,05,04,03,其中0A为数列的个数。

相关文档
最新文档