微机原理 实验一 加法程序

合集下载

微机原理实验:加减法

微机原理实验:加减法
mov cx, 8 ; 循环次数
print: mov ah, 2
mov dl, '0'
test bl, 10000000b
jz zero
mov dl, '1'
zero: int 21h
shl bl, 1
loop print
; 设置背景及字体颜色
mov cx, 9 ; 字符数量
mov di, 01h ; 起始地址
jz zero_2
mov dl, '1'
zero_2: int 21h
shl bh, 1
loop print_2
; 设置背景及字体颜色来自mov cx, 9 ; 字符数量
mov di, 01h ; 起始地址
color_2: mov [di], 11100000b ;黄底(1110) ,黑字(0000)
add di, 2
color: mov [di], 11110001b ;白底(1111) ,蓝字(0001)
add di, 2
loop color
mov dl, 'b'
mov ah, 2
int 21h
mov ax, 4c00h
int 21h
(二)减法部分
name "add-sub"
org 100h
; set segment register
mov ax, 0b800h
mov ds, ax
; 8 + 10 = 18 (decimal) or bin=00010010b
mov al, 8
mov bl, 10
add bl, al
mov bh, bl ;保存加法结果

微机原理实验报告

微机原理实验报告

微机原理实验报告班级:指导老师:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图图3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验结果与分析这次实验依次将相加数与被加数存入AL,BL,依次从低位向高位相加,然后把结果放在内存中。

微机原理实验

微机原理实验

微机原理实验实验⼀8086指令使⽤实验⽬的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。

3、BCD码,ASCII码及⽤⼗六进制数表⽰⼆进制码的⽅法。

4、8086寄存器: AX,BX,CX,DX,F,IP。

内容及步骤⼀、DEBUG 命令使⽤1、键⼊ DEBUG 进⼊ DEBUG 控制状态,显⽰提⽰符 '- '。

2、⽤命令 F100 10F 'A' 将'A'的ASCII码填⼊内存。

3、⽤命令 D100 10F 观察内存中的⼗六进制码及屏幕右边的ASCII字符。

4、⽤命令 F110 11F 41 重复上⼆项实验,观察结果并⽐较。

5、⽤命令 E100 30 31 32 …… 3F将30H-3FH写⼊地址为100开始的内存单元中,再⽤D命令观察结果,看键⼊的⼗六进制数是什么字符的ASCII码?6、⽤H命令检查下列各组⼗六进制数加减结果并和你的⼿算结果⽐较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH7、⽤R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

8、⽤R命令将AX,BX内容改写为1050H及23A8H。

⼆、8086常⽤指令练习1、传送指令1)⽤A命令在内存100H处键⼊下列内容:-A 0100↙****:0100 MOV AX,1234↙****:0103 MOV BX,5678↙****:0106 XCHG AX,BX↙****:0108 MOV AH,35↙****:010A MOV AL,48↙****:010D MOV DX,75AB↙****:010F XCHG AX,DX↙****:0111 ↙-注:****为段寄存器CS的值,是由计算机⽣成的;↙为回车操作。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加, 要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1.DATA2为首的5个内存单元中(低位在前), 结果送回DATA1处。

三、程序框图图3-1四、参考程序清单程序名: XIANGJ.ASMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?) DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC N EARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP A D2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五: 结果分析这次试验依次将相加数和被相加数存入AL, BL, 依次从低位向高位相加, 然后把结果放在内存中, 根据程序走向, 相加的结果依次放在内存地址DS:0000到DS:0004的位置上, 和我们实验预期结果一样。

微机原理加法及判断程序的编写调试实验

微机原理加法及判断程序的编写调试实验

1 当 x>0
y=
0 当 x=0
-1 当 x<0
二、实验目的和要求
实验目的 1、写汇编语言程序的基本方法和基本框架。 2、学会编写顺序结构、分支结构和循环结构的汇编程序。 3、掌握程序中数据的产生与输入输出的方法。 三、实验要求 1、实验前准备 (1)分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。 (2)写出算法或画出流程图。 (3)写出源程序。 (4)对程序中结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 2、本实验要求在 PC 机上进行。
四、 实验设备(软、硬件)
1、 IBM PC 和(PC/XT、AT、286、386、486)
2、 H-86/51 通用微机实验培养装置
五、 仪器使用说明
1、在 EDIT 中输入原程序,即生成 .asm 文件。 2、汇编.asm 文件
C:\WINDOWS\DESKTOP\BH-86>masm Source filename [.ASM]: E1 Object filename [E1.BOJ]: E1 Source listing [NUL.LST]: E1 Cross—reference[NUL.CRF]: E1
九、 参考资料
1、《微型计算机系统原理及应用-第四版》,周明德编著,清华大学出版社,2002 年。 2、《微型机接口技术》,王承发、刘岩主编,高等教育出版社,1998 年 3、《IBM PC 宏汇编语言程序设计》,张怀莲编,电子工业出版社,1989 年
十、思考题
程序中的原始数据是以怎样的形式存放在数据区中?请用 DEBUG 调试程序进行观察,
(5)、用 T 命令做单步跟踪执行程序。
附:DOS 调用程序
1、在显示器上显示一个字符 调用 02H 功能调用号,发 21H 号中断,将要显示的字符的 ASCII 码送入 DL,

微机原理实验程序

微机原理实验程序

第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。

处。

二、实验目的:1.学习数据传送和算术运算指令的用法。

.学习数据传送和算术运算指令的用法。

2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。

机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。

具体操作如图所示:文件。

点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。

微机原理与接口技术:加法减法运算指令

微机原理与接口技术:加法减法运算指令

1. 加法运算指令和调正指令ADD,ADC,INC,AAA,DAA(1)不带进位的加法运算指令ADDADD指令完成两个操作数相加,并将结果保存在目的操作数中。

指令格式:ADD OPRD1, OPRD2功能:操作数OPRD1与OPRD2相加,结果保存在OPRD1中。

说明:操作数OPRD1可以是累加器AL或AX,也可以是其它通用寄存器或存储器操作数,OPRD2可以是累加器、其它通用寄存器或存储器操作数,还可以是立即数。

OPRD1和OPRD2不能同时为存储器操作数,不能为段寄存器。

ADD指令的执行对全部6个状态标志位产生影响。

例如:ADD AL, BL ;AL+BL结果存回AL中。

ADD AX, SI ;AX+SI结果存回AX中。

ADD BX, 3DFH ;BX+03DFH结果存回BX中。

ADD DX, DA TA[BP+SI] ;DX与内存单元相加,结果存回DX中。

ADD BYTE PTR[DI], 30H ;内存单元与30H相加,结果存回内存单元中。

ADD [BX], AX ;内存单元[BX]与AX相加,结果存回[BX]中。

ADD [BX+SI], AL ;内存单元与AL相加,结果存回内存单元中。

【例题3-3】求D9H与6EH的和,并注明受影响的标志位状态。

MOV AL, 0D9HMOV BL, 6EHADD AL, BL结果AL=47H,标志位CF=1,PF=1,AF=1,ZF=0,SF=0,OF=0(2)带进位的加法运算指令ADCADC指令完成两个操作数相加之后,再加上Flags的进位标志CF。

CF的值可能为1或0。

指令格式:ADD OPRD1, OPRD2功能:操作数OPRD1与OPRD2相加后,再加上CF的值,结果保存在OPRD1中。

说明:对操作数的要求与ADD指令一样。

例如:ADC AL, BLADC AX, BXADC [DI], 30HADC指令主要用于多字节数的加法运算,以保证低位向高位的进位被正确接收。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

微机原理实验教学方案

微机原理实验教学方案

微机原理实验教学方案实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序流程图图 3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END E QU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05H AD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START。

微机-实验一 个位加法器

微机-实验一  个位加法器

实验一个位加法器一、实验目的掌握条件分支的汇编程序设计方法。

二、实验原理和内容把这两个上。

如果有进位,CARRY=31H,否则为30H(31H为“1”的ASCII码,30H为“0”的ASCII 码)。

并在屏幕上输出结果。

提示,字符输出程序:MOV DL, “待输出的ASCII码”MOV AH, 2INT 21H如何取变量:MOV SI, OFFSET OP1 或者MOV AL, OP1MOV AL, [SI]实验代码:DATAS SEGMENTOP1 DB 09H ;定义变量OP2 DB 08HCARRY DB?;申请内存不赋值RESULT DB?;DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV SI,OFFSET OP1 ;令SI指向OP1数据段的首地址MOV AL,[SI] ;取出OP1的数放在AL上MOV SI,OFFSET OP2 ;令SI指向OP1数据段的首地址MOV DL,[SI] ;取出OP1的数放在ALADD AL,DL;AL=AL+DLAAA;加法的非压缩调整指令,调整AL中的和MOV SI,OFFSET CARRY ;令SI指向CARRY数据段的首地址JNC SS1;无进位则跳转到SS1MOV BL,31HMOV [SI],BL;有进位则保存31H到CARRYADD AX,30H;调整JMP NEXT;段内跳转SS1:MOV BL,30HMOV [SI],BL;无进位则保存30H到CARRY NEXT:MOV SI,OFFSET RESULT;令SI指向RESULT数据段的首地址MOV [SI],AL;保存结果到RESULTMOV DL, CARRYMOV AH, 2;单字符输出,输出CARRY,即输出十位INT 21HMOV DL, RESULTMOV AH, 2;单字符输出,输出RESULT,即输出个位INT 21HMOV AH,4CHINT 21HCODES ENDSEND START实验截图:实验心得:刚开始实验时不了解软件的使用,及没有实操过汇编语言的编写,导致写起代码来非常慢,实验时也遇到许多错误,需要上网查资料,课本的知识也不牢固,需要回头复习。

微机原理与接口技术--实验一 认识实验及多字节加减法程序

微机原理与接口技术--实验一 认识实验及多字节加减法程序

北京XXX大学实验报告课程(项目)名称:微机原理与接口技术学院:专业:姓名:学号:指导教师:成绩:2013年12 月15 日实验一认识实验及多字节加减法程序一、任务与目的1. 实验任务:(1) 熟悉和掌握MASM汇编程序及TD调试软件的使用;(2) 熟悉代码段、数据段、堆栈段的结构;(3) 掌握8086/8088汇编程序的结构;(4) 掌握多字节加减法程序的编写。

2. 实验目的:(1). 掌握8086/8088汇编程序及调试程序的基本使用方法;(2) 熟悉8086/8088汇编语言编写的基本结构;(3) 熟悉多字节加减算术运算的基本方法。

二、原理(条件)1.相关知识:(1) MASM汇编程序及TD调试软件的使用方法;(2) 8086/8088汇编程序结构及算术运算等相关指令。

2.实验条件:MASM汇编程序及TD调试软件。

三、内容步骤1.启动TD(Turbo Debugger)输入程序段,观察执行情况并分析结果:(1) MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV [0200H],BXMOV ES:[0300H],AX(2) MOV AX,0A268H MOV SI,9D1CH ADD AX,SIAX= 3f84h CF= 1 AF=1 ZF=0 PF= 1 OF= 1 SF= 0 ADD AL,30HAX= 3fb4h CF= 0 AF= 0 ZF= 0 PF=1 OF= 0SF= 1ADC AX,0FFFFHAX= 3fb3h CF=1 AF= 1 ZF= 0 PF=0 OF= 0 SF= 0(3) 输入程序段,分步运行:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DXPOP DXPOP CXPOP BXPOP AX2.编写多字节加/减汇编程序,观察执行情况并分析结果:利用MASM宏汇编程序及TD程序进行调试。

微机原理课设-加法练习程序

微机原理课设-加法练习程序

课程设计课程设计名称:微机应用系统课程设计专业班级:计科1204班学生姓名:张婷婷学号: 201216010433指导教师:王锋课程设计时间: 2014.12.22-2015.1.3计算机科学与技术专业课程设计任务书一.课程设计实验的目的课程设计的目的在于更好的锻炼我们的实践能力和考验平时学习的成果。

我们是计算机专业,离不开编写代码。

平时上课所学的知识来自于课本,上机实验相对比较少,所能锻炼的操作能力机会不多。

而课程设计是让我们综合平时课本和实验的知识及经验,自己设计和构造,编写一个相对完整的程序。

这不仅仅是对以前知识的巩固,更是锻炼我们的思维,我们的设计与编写程序的能力。

对于我们以后将会从事的计算机类工作,这能很好的为我们打下坚实的基础,所谓积少成多,每学期都做课程设计,到毕业时我们对于编写一个应用软件或许就能较容易驾驭了。

本次微机应用系统课程设计我的题目是加法练习程序设计,虽然只要求加法运算,但我在该程序里添加了减法运算,使得程序相对不会太单调。

虽然给的编程题目可能会与别人一样,但每个人的想法不一样,在设计时添加自己的想法或许就能使程序更加完善了,这也是课程设计对我们的一种锻炼。

二.实验设计的任务与要求加法练习设计程序的内容是:随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按 R 键继续下一题,按 Q 键返回 DOS。

按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:1.设计一个菜单,选项为加法和减法的练习。

2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。

3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。

4.提示是否继续下一题,按R键继续下一题,按Q键返回 DOS。

这次课程设计是在完成设计要求的基础上,添加了减法练习运算,以仔细、认真、规范的态度完成自己课程设计。

微机原理加法及判断程序的编写调试实验

微机原理加法及判断程序的编写调试实验

(1)说明程序基本结构,包括程序中各部分的功能。 (2)说明程序中各部分所用的算法和编程技巧。
4、上机调试说明 (1)上机调试步骤。 (2)上机调试过程中遇到的问题是如何解决的。 (3)对调试源程序的中间结果和最终结果进行分析。 3、画出程序总框图。 (1)写出源程序清单与执行结果 (2)回答思考题
5067+410090Byes symbol space free
0 Warning Errors
0 Severe Errors 3、连接程序
C:\WINDOWS\DESKTOP\BH-86>link Object Modules [.OBJ]: E1 Run File [E1.EXE]: E1 List File [NUL.MAP]: E1 Libraries [.LEB]: E1
2显示的字符串所在地址送入 DL,就
可在显示器上显示该字符串。 MOV DL,OFFSET XX; 将要显示的字符串地址送入 DL MOV AH,09H; 调用 09H 功能 INT 21H; 发中断请求
3、返加 DOS 状态的方法 当执行.EXE 文件时,是在 DOS 状态下进行的,如果希望在执行完.EXE 文件后
4、执行程序 C:\WINDOWS\DESKTOP\BH-86> E1
(可以看到程序执行的结果) 5、进入 DEBUG 状态
C:\WINDOWS\DESKTOP\BH-86>DEBUG E1.EXE (1)、用 U 命令调出原程序,从原程序中找出:代码段地址 CS、代码段偏移址 IP、
数据段地址 DS,ES,数据段偏移量 SI。(0BA3:0000) (2)、用 D 命令观察程序在执行前 DATA 中数据的存放情况。(-D 0BA2:0000) (3)、用 G 命令执行程序后,再观察 DATA 中数据的存放情况。 (4)、用 R 命令显示各寄存器的状态。

微机原理实验指导书1-二进制多位加法运算

微机原理实验指导书1-二进制多位加法运算

微机原理实验指导书1-二进制多位加法运算实验一二进制多位加法运算一、实验目的1.熟悉实验系统键盘显示的使用。

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

3.掌握加法类指令对状态标志位的影响。

二、实验设备与工具1.微机原理与接口技术实验箱。

2.微型计算机。

三、实验原理及方法实验内容:计算X+Y+Z=?(X、Y、Z为16位二制数)本实验是三个十六位二制数相加运算,因此,当X+Y时要考虑用ADC指令,把进位C加到结果的高16位中,当(X+Y)+Z时,再把进位C加到结果的高16位中,本实验如设定三个加数0FFFFH,计算结果应为2FFFDH。

四、实验步骤1.打开实验箱前盖。

检查:(1)JK(开关)置‘系统’:键盘/显示接口选择系统配置的8255接口芯片,进入监控状态。

(2)KB6:通讯选择开关,KB6开关拨向88一侧(单8086实验仪无KB6),选择PC机和8086系统通讯。

(3)不插或卸掉已装的CPU卡(单8086实验仪无CPU卡安装、插座)。

2.将随机配送的串行通讯线,一端与实验仪的RS232D型插座CZ1相连,另一端与PC机COM1或COM2串行口相连。

3.接通实验系统电源,+5V LED指示灯应正常发光,实验仪数码管应显示闪动P.,说明实验仪初始化成功,处于待命状态。

(否则应及时关闭电源,待修正常后使用)4.打开PC机电源,执行DJ8086K的集成调试软件,关于该软件的详细说明请参阅《DJ8086K实验系统与PC机联机操作部分》。

5.编写程序,在PC机和实验系统联机状态下,运行该实验程序。

如可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598k8Asm文件夹,点击S1.ASM 文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或“单步运行”,即开始运行程序。

6.运行完后,运算结果保留在内存4100H~4102H单元中,点击DJ-8086K软件中存贮器RAM窗口,输入RAM的起始地址4100、4101、4102,当三个被加数为0FFFFH,三个单元内容应为FD、FF、02。

微机原理实验一两个多位十进制数相加实验试做报告

微机原理实验一两个多位十进制数相加实验试做报告
INT21H
CODE ENDS
END START
运行结果:
75249
上述程序有很多不方便的地方,比如①加数和被加数以低字节在前高字节 在后顺序存放在内存单元中,不符合我们日常的习惯,如果改为高字节在前低 字节在后的形式存放数据,程序如何改变?②程序只显示了相加结果,没有显 示加数和被加数,如果要求显示加数和被加数,程序如何修改?③如果按47193+28056=75249格式显示,程序如何修改?
【实验说明】
汇编语言没有十进制加法指令,ADD/ADC加法指令的运算对象是二进制 数,如果要进行BCD码数的加法,需要对结果进行修正。组合BCD码的加法调 整指令为DAA,它针对AL寄存器中的组合BCD码数之和进行修正。对于未组合BCD码的加法调整指令为AAA(加法的ASCII码调整指令),它将存于AL寄存 器中的一位ASCII码数加法运算的结果调整为一位拆开型十进制数,仍保留在AL中,如果向高位有进位(AF=1),则进到AH中。
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,5;计数
MOV SI,0;做指针用,因从DATA1的第一个数取数,故SI=OCLC
NEXT:
MOVAL,DATA1[SI];取被加数给AL
ADCAL,DATA2[SI];取加数和AL相加
AAA:未组合十进制数加法调整指令
运行结果:
47193
28056
75249
3程序清单(wjsy3a.asm)
DISP MACRO M
MOV AH,2
MOV DL,M
INT21H
ENDM
DATA SEGMENT
DATA1DB 34H,37H,31H,39H,33H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一加法程序
一、实验目的:
学习数据传送和算术运算指令的用法。

二、实验内容:
将两个多位十进制28056,47193相加,并显示加数,被加数,和。

要求两个加数均以ASCII码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。

三,程序流程图:
程序流程如图2.1所示。

图2.1十进制数相加程序流程图
SHOW MACRO B
MOV DL,B
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H
DATA2 DB 36H,35H,30H,38H,32H
DATA3 DB '____ ',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STA DB 20 DUP (?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DATA2
MOV BX,05
SHOW 20H
CALL DISPL
SHOW 0DH
SHOW 0AH
MOV SI,OFFSET DATA1
MOV BX,05
SHOW 2Bh
CALL DISPL
SHOW 0DH
SHOW 0AH
S1: SHOW 2DH
LOOP S1
SHOW 0DH SHOW 0AH
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
CALL ADDA
MOV SI,OFFSET DATA1
MOV BX,05
SHOW 20H
CALL DISPL
MOV AX,4C00H
INT 21H
DISPL PROC NEAR
DS1: SHOW [SI+BX-1]
DEC BX
JNZ DS1
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BX
JNZ AD1
MOV SI,DX
MOV DI,BP
MOV CX,05
CLC
AD2: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL
AAA
MOV [SI],AL
INC SI
INC DI
MOV SI,DX
MOV DI,BP
MOV BX,05
AD3: ADD BYTE PTR [SI+BX-1],30H
ADD BYTE PTR [DI+BX-1],30H
DEC BX
JNZ AD3
RET
ADDA ENDP
CODE ENDS
END START
编写完源程序后,保存为文件名为“JIAFA.ASM”的文件。

五、实验结果:
①用“ML”命令对源程序“JIAFA.ASM”进行汇编链接。

由于输入代码时粗心,输入有误,编译器提示程序错误在20和21行:
②输入“EDIT JIAFA..ASM”进入编辑界面,查找20和21行,发现输入逗号“,”输入时错写成句号“.”,开始改错:
③纠正后保存,接着汇编链接,程序正确,生成可执行文件“JIAFA.EXE”:
④输入“JIAFA.EXE”执行程序,执行结果如下,符合题目要求:
六、思考题:
问:不改变数据段DATE1和DATE2的内容,如何将加数和被加数分别由28056和47193变成65082和39174,并且相加。

答:将原程序中的数据相加顺序改变一下,即将原来的倒序相加变为顺序相加,也可将结果变为65082和39174。

程序具体改动如下:
源程序改变后的程序
DS1:SHOW [SI+BX-1] 改为 DS1: SHOW [SI]
AD2: MOV AL,[SI] 改为 AD2: MOV AL,[SI+BX-1]
INC SI
INC DI 改为 DEC BX
ADD BYTE PRT 改为 ADD BYTE PRT [SI],30H
[SI+BX-1],30H 改为 ADD BYTE PRT [DI],30H
ADD BYTE PRT 改为 INC SI
[DI+BX-1],30H 改为 INC DI
七、实验总结:
本次实验第一次将课本上的程序搬入机器中运行,虽然程序较长且难理解,不过在电脑上可进行“debug”调试,学起来更加得心应手。

同时,编译器能提示程序的错误行,这对程序的调试提供很大的帮助。

虽然自己目前还达不到自己编写出类似复杂汇编程序的水平,不过本次实验激发了我的学习热情,在接下来的学习过程中,我将更加重视上机实验这个环节,毕竟在自己笔记本上也可以做这些类似实验。

实验过程中注意保持细心、耐心,因为正确输入源程序将为接下来的工作提供很大便利,如果在输入程序时粗心大意,造成较多错误,将严重拖慢接下来的实验进度。

相关文档
最新文档