微机原理程序
微机原理实验报告清零程序
![微机原理实验报告清零程序](https://img.taocdn.com/s3/m/b15be218482fb4daa58d4b39.png)
竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。
(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。
(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。
再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。
二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。
微机原理实验2程序字符串匹配实验
![微机原理实验2程序字符串匹配实验](https://img.taocdn.com/s3/m/c214b9c727d3240c8547ef01.png)
8086汇编语言程序实验:实验二、字符串匹配实验题目:1、(必做题)编程实现:从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。
2、(选做题)编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。
对应程序如下所示:;第1题;====================================HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。
MOV DL,0DH ;用2号功能“显示”回车。
MOV AH,02HINT 21HMOV DL,0AH ;用2号功能“显示”换行。
MOV AH,02HINT 21HENDMDA TA SEGMENTMESSAGE1 DB 'MATCH','$' ;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。
MESSAGE2 DB 'NO MATCH','$' ;定义“NO MA TCH”提示信息。
TISHI1 DB 'Please input the first string:','$' ;提示输入第1个字符串的提示信息。
TISHI2 DB 'Please input the second string:','$' ;提示输入第1个字符串的提示信息。
STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。
DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。
DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。
STRING2 DB 100DB ?DB 100 DUP(?)DA TA ENDSSTACK SEGMENT ;定义一个50字节大小的堆栈段空间。
微机原理-常用指令用法
![微机原理-常用指令用法](https://img.taocdn.com/s3/m/103b9e36cdbff121dd36a32d7375a417866fc1fe.png)
微机原理-常⽤指令⽤法序号指令功能和特点例程1 例程2 例程3 1 MOV 参与传送的操作数有:通⽤寄存器,段寄存器,存储单元,⽴即数四类。
有有互相之间只要不违背以下原则即可进⾏传送:1.源,⽬的操作数长度⼀致2.源,⽬的操作数不能同为存储单元3.CS不能作为⽬的操作数4.段寄存器只能通过通⽤寄存器或存储单元进⾏赋值。
5.⽴即数不能作为⽬的操作数。
2 PUSH ⼀定是字操作(不能PUSH字节)有PUSH AX,PUSH DS,PUSH [0000H] ;【POP对等】SP <‐ SP‐2,字存⼊SP指向的地址(⾼位在⾼地址)操作数可以为通⽤寄存器,段寄存器或存储单元,CS可PUSH不可POP3 POP 与PUSH对等4 XCHG Xchg dst,src可在通⽤寄存器间,通⽤寄存器和存储单元间进⾏。
不能⽤段寄存器和⽴即数。
XCHG [1200H],DXXCHG AL,CL5 XLAT 直接写出XLAT就⾏,在调⽤该指令前,需将BX初始化为数据表的⾸地址,AL初始化为希望取得的数据在数据表中的序号。
在调⽤该指令后,AL中的内容被赋值为DS:[BX][AL]的内容。
6 LEA LEA BX,1000H[SI],执⾏后BX = SI+1000H有LEA BX,TABLEMOV BX,OFFSET TABLE,以上两条等价7 LDS 指针送寄存器和DS指令LDS dst,src将SRC指定的连续4个存储单元的内容传送到DS和DST指向的寄存器,⾼字送到DS,低字送到DST假设DS=3200H,(33550H)=3A78H,(33552H)=1998HLDS SI,[1550H]后,SI = 3A78H,DS = 1998H8 LES 类同LDS,不同的是DS改成了ES9 SAHF 将AH的内容送标志寄存器的低8位10 LAHF 把标志寄存器的低8位送⼊AH11 PUSHF 将16位标志寄存器内容压⼊堆栈12 POPF 从堆栈弹出字数据送⼈标志寄存器13 ADD Dst可以为存储单元或通⽤寄存器有 Src可为存储单元,通⽤寄存器或⽴即数,不能同时为存储单元Add ax,1234hAdd [1234h],ax14 ADC Adc dst,srcDst = dst+src+cf15 INC Inc dstDst为通⽤寄存器或存储单元影响OF,SF,ZF,AF,PF,但不影响CF。
微机原理第04章4子程序
![微机原理第04章4子程序](https://img.taocdn.com/s3/m/942a7b227c1cfad6185fa792.png)
mov ah,9
;;宏定义体
lea dx,message
int 21h
endm
…
dispmsg string ;宏调用(宏指令)
…
1 mov ah,9
;宏展开
1 lea dx,string
1 int 21h
第4章:宏与比子程序的比较
宏
较
子程序
仅是源程序级的简化: 宏调用在汇编时进行 程序语句的展开,不 需要返回;不减小目 标程序,执行速度没 有改变
第4章:例4.16 显示以“0” 结尾字符串的嵌套子程序
msg
;数据段 db 'Well, I made it !',0 ;代码段(主程序) mov si,offset msg ;主程序提供显示字符串 call dpstri ;调用子程序
第4章:例4.16 子程序
;子程序dpstri:显示DS:SI指向的字符串(以0结尾)
第4章:4.6 子程序设计
把功能相对独立的程序段单独编写和调 试,作为一个相对独立的模块供程序使 用,就形成子程序
子程序可以实现源程序的模块化,可简 化源程序结构,可以提高编程效率
主程序(调用程序)需要利用CALL指令 调用子程序(被调用程序)
子程序需要利用RET指令返回主程序
第4章:4.6.1 过程定义和 子程序编写
dpstri proc
push ax
dps1: mov dl,[si] ;取显示字符
inc si
cmp dl,0
;是结尾,则显示结束
jz dps2
call dpchar ;调用字符显示子程序
jmp dps1
dps2: pop ax ret
dpstri endp
8086微机原理打字练习程序
![8086微机原理打字练习程序](https://img.taocdn.com/s3/m/1f925b4be45c3b3567ec8bfa.png)
1课程设计题目与要求设计题目:打字练习程序课程设计内容:设计一个在键盘上练习打字的程序。
先在屏幕上显示一段文字,用户按照它在键盘上输入,如果按错键则以红色显示并报警,正确的输入,则正常显示。
课程设计目的:熟悉和掌握有关键盘ASCⅡ码,中断及字符显示技术。
课程设计要求:自行编制报警中断和显示错字红色中断处理程序,为保存原中断向量。
程序运行时,通过条件调用自编的中断向量处理程序。
程序退出时,恢复中断向量。
屏幕上显示出提示信息和练习的字符段,按照字符段从键盘上输入字符即可,每输入完一行后能自动刷新练习的字符段按Esc键可退出程序。
2相关理论知识2.1扬声器驱动PC机上的大多数I/O都是由主板上的8255(或8255A)可编程外围接口芯片(PPI)管理,用PPI输出寄存器中的PB0和PB1来控制扬声器的驱动,而8253的通道2的输出端与扬声器相连,PB0连接通道2的CKL2,PB1和通道2的OUT2通过一与非门连接扬声器,在PB0与PB1都为高电平时,由8253产生的脉冲就进入扬声器产生声音。
2.2 相关指令1)无条件转移指令无条件转移指令必须指定转移的目标地址(或称为转向地址),将程序无条件地转移到目标地址,去执行从该地址开始的指令。
如“JMP 目标地址”2)条件转移指令条件指令是根据执行该指令前标志位的状态而决定是否发生的控制转移指令。
每条指令测试不同的标志位组合,看是否满足条件。
若不满足,则继续执行跟在条件转移指令后面的指令;若满足则将程序控制指令转移到改指令给出的目标地址,去执行那里开始的程序。
如用到的“JA 目标地址”用到的标志符:JC-------CF标志为1,则转移JNC-------CF标志为0,则转移JA-------高于/不低于等于转移JB-------低于/不高于等于转移JG-------大于/不小于等于转移3)循环控制指令在设计循环程序时,可用于控制指令来控制循环是否继续。
如loop指令,其指令格式“loop 目标地址”4)子程序调用和返回指令CALL指令:实现子程序(或过程)的调用。
微机原理求最大值最小值程序
![微机原理求最大值最小值程序](https://img.taocdn.com/s3/m/460d78802dc58bd63186bceb19e8b8f67c1ceffb.png)
微机原理求最大值最小值程序求最大值和最小值的程序可以通过比较输入的数值来实现。
以下是一个简单的微机原理程序示例:ORG 100H ; 程序起始地址。
MOV CX, 5 ; 循环计数器,假设要比较5个数。
MOV AH, 01H ; 输入操作的功能码。
; 初始化最大值和最小值。
MOV BX, 0 ; BX 寄存器存储最大值。
MOV DX, 0FFFFH ; DX 寄存器存储最小值。
LOOP_START:INT 21H ; 调用DOS中断21H读取一个字符。
SUB AL, 30H ; 将字符转换为数字。
; 比较当前输入的数值和最大值。
CMP AL, BL.JLE CHECK_MIN.MOV BL, AL ; 更新最大值。
CHECK_MIN:; 比较当前输入的数值和最小值。
CMP AL, DL.JGE LOOP_END.MOV DL, AL ; 更新最小值。
LOOP_END:LOOP LOOP_START.; 输出最大值和最小值。
MOV AH, 02H ; 输出操作的功能码。
MOV DL, BL ; 输出最大值。
ADD DL, 30H ; 将数字转换为字符。
INT 21H.MOV DL, ' ' ; 输出一个空格。
INT 21H.MOV DL, DL ; 输出最小值。
ADD DL, 30H ; 将数字转换为字符。
INT 21H.MOV AH, 4CH ; 程序结束的功能码。
INT 21H.END ; 程序结束。
以上程序使用DOS中断21H来进行输入和输出操作。
通过循环比较输入的数值,更新最大值和最小值,并最后输出它们。
请注意,这只是一个简单的示例程序,实际应用中可能需要根据具体需求进行修改和扩展。
《单片微机原理及应用》实验参考程序(32页)
![《单片微机原理及应用》实验参考程序(32页)](https://img.taocdn.com/s3/m/c9e69cb169dc5022aaea0018.png)
《单片微机原理及应用》实验参考程序杭州电子科技大学电子信息学院张学超编写(使用达爱思Dais-80958B单片机实验开发系统)一、软件实验参考程序软件实验一清零程序Array ;将2000H-20FFH的内容清零SS01: CLR AMOV DPTR, #2000HMOV R7, #0FFHCLR0: MOVX @DPTR,AINC DPTRDJNZ R7, CLR0CLR1: SJMP CLR1 ; SJMP $软件实验二拆字程序;把2000H的内容拆开,高4位送2001H的低4位,低4位清零。
SS02: MOV DPTR, #2000HMOVX A, @DPTR ;取数MOV B, A ;暂存该数SW AP A ;高低半字节交换ANL A, #0FH ;屏蔽高4位INC DPTRMOVX @DPTR,A ;原数高半字节送2001HMOV A, B ;取回原数ANL A, #0FH ;屏蔽高4位INC DPTRMOVX @DPTR,A ;原数低半字节送2002HSJMP $软件实验三拼字程序;把2000H和2001H的低4位分别送入2002H的高低4位。
SS03: MOV DPTR, #2000HMOVX A, @DPTR ;取第一个半字节ANL A, #0FH ;屏蔽高4位SW AP A ;高低半字节交换MOV B, A ;暂存该数INC DPTRMOVX A, @DPTR,;取第二个半字节ANL A, #0FH ;屏蔽高4位ORL A, B ;两个半字节拼成一个字INC DPTRMOVX @DPTR,A ; 拼好的字送2002HSJMP $软件实验四数据区传送子程序;把R2R3为源RAM区首址内的R6R7字节数据传送到R4R5为目的RAM区。
SS04: MOV DPH, R2MOV DPL, R3 ;取源地址指针MOVX A, @DPTR ;取数据INC DPTR ;源地址指针+1MOV R2, DPHMOV R3, DPL ;保存源地址指针MOV DPH, R4MOV DPL, R5 ;取目的地址指针MOVX @DPTR, A ;存数据INC DPTR ;目的地址指针+1MOV R2, DPHMOV R3, DPL ;保存目的地址指针CLR CMOV A, R7SUBB A, #1MOV R7, AMOV B, A ;暂存16位字节数低字节MOV A, R6SUBB A, #0MOV R6, A ;字节数减一:(R6R7)← (R6R7)−1ORL A, B ;(R6R7)=0?JNZ SS04 ;未完继续传送RETSS04C: MOV R3, #00HMOV R2, #20H ;指定源地址为MOV R5, #00HMOV R4, #30H ;指定目的地址为3000HMOV R7, #00HMOV R6, #01H ;传送字节数为100HLCALL SS04 ;从2000H开始向3000H开始的地址区传送100H个数据SJMP $软件实验五数据排序实验;把8051中RAM 50H-5AH中放入不等的数据,运行本实验程序后检查50-5AH中内容是否按从小到大排列。
微机原理十进制减法实验程序
![微机原理十进制减法实验程序](https://img.taocdn.com/s3/m/03bf4a20591b6bd97f192279168884868762b82e.png)
微机原理十进制减法实验程序一、十进制数相减程序设计实验DATA SEGMENTDATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DATA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串 JNZ SU1 ;转化为十六进制的数字串 MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整 MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串 JNZ SU3 RETSUBA ENDPCODE ENDSEND START二、十进制数排序程序设计实验;;;;;功能:冒泡排序服务程序;;;;;;DATA SEGMENTWORD DB 'Input numbers:',0DH,0AH,'$'BUF DB 100 DUP('$')DATA1 DB 0DH,0AH,'The result is:',0DH,0AH,'$' COUNT DB 0 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:;;;;;;;;;;;;;;初始化;;;;;;;;;;;;;MOV AX,DATAMOV DS,AXLEA DX,WORDMOV AH,09HINT 21HLEA DX,BUFMOV AH,0AH ;输入字符到缓冲区INT 21H ;输入数据(0~99),每个数据空格隔开;;;;;;功能:计算键入数字个数;;;;;;;;;;;;;H1: MOV AL,DI[BUF+2]CMP AL,' ' ;是否为空格JNZ H2INC [COUNT] ;有数字,数量+1JMP H3H2: CMP AL,0DH ;是否为CRJZ H4H3: INC DIJMP H1H4: INC [COUNT];存放需要比较的个数;;;;;;;功能:冒泡排序服务程序;;;;;;;;;;;;; MOV CX,0MOV CL,BYTE PTR [COUNT];循环次数L1: PUSH CXMOV CL,BYTE PTR [COUNT]MOV DI,0;取首位数据L4: CALL COUNT1;调用判断数据位数子程序CMP BL,DL;比较位数的大小JA L5;前一个数比后一个数大的情况JNE L6CMP BL,1JNZ L7CALL XCH3;同为一位数的比较JMP L5L7: CALL XCH2;同为两位数的比较JMP L5L6: CALL XCH1;前一个数比后一个数位数少的情况L5: LOOP L4POP CXLOOP L1;;;;;;;;显示排序结果;;;;;;;;;;DISPLAY:LEA DX,[DATA1]MOV AH,09HINT 21H;显示提示信息LEA DX,[BUF+2]MOV AH,09HINT 21H;显示结果MOV AH,4CHINT 21H;返回结束;;;;;;;;判断数据位数;;;;;;;;;;COUNT1:MOV DX,0MOV BX,0J1: MOV AL,DI[BUF+2]CMP AL,' 'JZ J2CMP AL,0DHJZ J3INC BLINC DIJMP J1J2: MOV AL,DI[BUF+3]CMP AL,' 'JZ J3CMP AL,0DHJZ J3INC DLINC DIJMP J2J3: SUB DI,DXINC DIRET;;;前一个数比后一个数位数少的情况;;XCH1:MOV AL,DI[BUF] ;第一个数装入ALMOV BX,WORD PTR DI[BUF+2] ;第二个数装入BX MOV WORD PTR DI[BUF],BXMOV BL,20HMOV DI[BUF+2],BLMOV DI[BUF+3],ALINC DIRET;;;;;;;;;;同为两位数比较;;;;;;;;;XCH2:MOV BX,WORD PTR DI[BUF-1] ;第一个数装入BX MOVDX,WORD PTR DI[BUF+2] ;第二个数装入DX CMP BX,DX JAE L9 ;>=不交换MOV WORD PTR DI[BUF-1],DXMOV WORD PTR DI[BUF+2],BXL9: RET;;;;;;;;;;同为一位数的比较;;;;;;;;XCH3:MOV DL,DI[BUF] ;第一个数装入DLMOV DH,DI[BUF+2];第二个数装入DHCMP DL,DHJAE L10 ;>=不交换MOV DI[BUF],DHMOV DI[BUF+2],DLL10: RETCODE ENDSEND START三、8255输入输出实验;//***************************************************** ;文件名: 8255IO for 8088;功能: 8255输入、输出实验;接线: 用导线连接8255模块的CS_8255到CPU模块的200H;; 8255模块的JD3C到八位逻辑电平输出模块的JD1E。
微机原理与汇编语言程序设计实验一
![微机原理与汇编语言程序设计实验一](https://img.taocdn.com/s3/m/fcda6f136edb6f1aff001fec.png)
实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
微机原理课程设计_进制转换程序设计
![微机原理课程设计_进制转换程序设计](https://img.taocdn.com/s3/m/ea3d3d52ad02de80d4d8407f.png)
课程设计任务书学生姓名:易杨专业班级:电信 0802 指导教师:曾刚工作单位:信息工程学院题目:进制转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、程序实现二进制、十进制、十六进制之间的转换2、在命令提示下输入相应进制数,回车后进行转换3、输入错误时应声响报警并拒绝输入4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1原理分析 (1)2程序设计流程 (3)2.1程序流程图 (3)2.2设计思路 (4)3程序设计 (5)3.1堆栈段数据段程序设计 (5)3.2主程序设计 (5)3.3输入二进制程序 (7)3.4输入十进制程序 (8)3.5输入十六进制程序 (8)3.6输出二进制程序 (9)3.7输出十进制程序 (9)3.8输出十六进制程序 (11)3.9回车键确定程序 (11)3.10报警程序 (12)4运行结果 (13)5心得体会 (15)参考文献 (16)摘要日常生活与实际应用中,往往需要计算机处理的信息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。
但在计算机内部采用的是二进制计数制,这种进制表达方法对于人们研究分析是不那么方便的。
本次课程设计将通过所学的微机原理知识理论,用汇编语言编写程序,实现二进制、十进制与十六进制之间的相互转换,并在MF2KP软件上演示。
关键词:汇编程序进制转换MF2KP1 原理分析进位计数制是人们利用符号来计数的方法。
一种进位计数制包含一组数码符号和两个基本因素。
数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。
微机原理-第1章 计算机基础知识
![微机原理-第1章 计算机基础知识](https://img.taocdn.com/s3/m/9c70d7d752d380eb62946dda.png)
二进制(binary system):
进位基数为为“2”,即其使用的数码为0,1,共
两个。 二进制各位的权是以2为底的幂,
代表字母:B
八进制(octave system): 进位基数为“8”,即其数码共有8个:0,1,2,3,
4,5,6,7。 代表字母:O 十六进制(hexadecimal system): 进位基数为“16”,即其数码共有16个:0,1,2,3,
作用:利用摩根定理,可以解决与门、或门互换的 问题。
二变量的摩根定理为:
A+B=A·B A·B=A+B 推广到多变量:
A+B+C+…=A·B·C…
A·B·C…=A+B+C+… 至于多变量的摩根定理,用相同的方法同样可以得
到证明。 这个定理可以用一句话来记忆:头上切一刀,下面
变个号。 【例1.10】
1.1.3 为什么要用十六进制?
用十六进制既可简化书写,又便于记忆。如下列 一些等值的数:1000(2)=8(16)(即8(10))
1111(2)=F(16)(即15(10)) 11 0000(2)=30(16)(即48(10))
1.1.4 数制的转换方法
1. 十进制数转换成二进制数的方法 整数部分:采用基数连除的方法; 小数部分:采用基数连乘的方法;
在计算机的设计与使用上常用的数制则为十进制、 二进制、八进制和十六进制。
1.1.1 数制的基与权 概念:
1、数制的基(进位基数):每一数位所能使用的数
码的个 数称为数制的基;
2、数制的权:数制每一数位取值为1时所具有的值 的大小,称为权。
十进制(decimal system):进位基数为“10”,即它所 使用的数码为0,1,2,3,4,5,6,7,8,9,共 有10个。
微机原理8086汇编语言程序设计
![微机原理8086汇编语言程序设计](https://img.taocdn.com/s3/m/5eac1028700abb68a882fb87.png)
;这是一个乘10子程序
;使用寄存器AX
;入口:AX,出口:AX
proc far
push bx
;保护现场
pushf
add ax,ax
;2ax
功
mov bx,ax
;2ax ?bx
能
add ax,ax
;4ax
程
add ax,ax
;8ax
序
add ax,bx
;10ax
段
popf
;恢复现场
pop bx
ret
endp
第四章 8086汇编语言程序设计
? 几个概念 ? 8086汇编语言的语句 ? 8086汇编中的伪指令 ? 8086汇编中的运算符 ? 汇编语言程序设计 ? 宏定义与宏调用 ? 系统调用
几个概念
? 汇编语言 ? 汇编语言源程序 ? 汇编 ? 汇编程序
4.1 8086汇编语言的语句
汇编语言由指令性语句和指令性语句组成 ? 一、指令性语句格式
CODE SEGMENT
;定义代码段
ASSUME DS:DATA , CS: CODE
START: MOV AX , DATA
;初始化DS
MOV DS , AX
……
MOV AX , 4C00H ;返回DOS
INT 21H
CODE ENDS
;代码段结束
END START
;源程序结束
;段属性说明
? 特点 ? 程序分段 ? 语句由指令性和指示性语句组成 ? 两种程序框架
? 3、 ORG伪指令、地址计数器 $
ORG伪指令格式: ORG <表达式>
? 4、END 表示源代码结束 格式为: END 常数或表达式.
微机原理与程序设计
![微机原理与程序设计](https://img.taocdn.com/s3/m/4476ff47178884868762caaedd3383c4bb4cb4ff.png)
微机原理与程序设计微机原理与程序设计是计算机科学与技术专业的一门重要课程,它是培养学生计算机基础知识和编程实践能力的关键课程之一。
本文将介绍微机原理与程序设计的基本概念、主要内容和学习方法,帮助读者更好地理解和掌握这门课程。
一、微机原理微机原理是微机系统的基础理论,它主要研究微机硬件系统的组成、工作原理和设计方法。
微机系统由中央处理器(CPU)、存储器、输入输出设备和系统总线等组成,它们之间通过总线进行数据和信号的传输。
微机原理研究的重点包括微机的结构、指令系统、中断系统、时序控制和总线结构等内容。
1. 微机的结构微机的结构主要包括中央处理器(CPU)、存储器和输入输出设备。
中央处理器是微机的核心部件,它包括运算器、控制器和寄存器等。
存储器用于存储程序和数据,包括随机存储器(RAM)和只读存储器(ROM)等。
输入输出设备用于与外部设备进行数据的输入和输出。
2. 指令系统指令系统是微机硬件的基本功能之一,它定义了微机执行的基本操作和指令格式。
指令系统包括数据传输指令、算术逻辑指令、控制转移指令等,通过这些指令可以实现数据的读写、运算和控制等功能。
3. 中断系统中断是微机系统中的一种重要的事件处理机制,它可以使微机在执行程序的同时响应外部事件。
中断系统包括中断源、中断控制器和中断处理程序等,通过中断可以实现对外部事件的及时响应和处理。
4. 时序控制时序控制是微机系统中的重要环节,它用于控制微机硬件的时序和操作的顺序。
时序控制包括时钟信号的产生和分配、指令的执行周期和时序、总线的访问和时序等。
5. 总线结构总线是微机硬件系统中各个部件之间进行数据和信号传输的通道,它包括地址总线、数据总线和控制总线等。
总线结构的设计和实现直接影响着微机系统的性能和扩展性。
二、程序设计程序设计是微机原理的重要应用领域,它是指根据问题需求和算法设计程序,并通过编程语言实现。
程序设计的关键是理解问题需求、选择合适的算法和数据结构,并用编程语言将算法转化为可执行的程序。
微机原理微型计算机的程序设计
![微机原理微型计算机的程序设计](https://img.taocdn.com/s3/m/a99976a0900ef12d2af90242a8956bec0975a528.png)
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:
微机原理简单程序设计实验流程图
![微机原理简单程序设计实验流程图](https://img.taocdn.com/s3/m/a6ef30a37d1cfad6195f312b3169a4517723e50c.png)
微机原理简单程序设计实验流程图下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 实验目的:了解微机原理和程序设计的基本概念。
掌握使用汇编语言或高级语言进行程序设计的方法。
微机原理必备程序段
![微机原理必备程序段](https://img.taocdn.com/s3/m/034448f9f61fb7360b4c658a.png)
1.数据传送:问题描述:设在DS=3000H,偏移地址为0100H的内存中顺序存放着100个字节的数据。
要求传送到以2000H为起始偏移地址的区域。
代码:利用寄存器间接寻址来寻找操作数可以编程如下:mov ax,3000hmov ds,ax ;建立数据段mov si,0100h ;建立源数据指针mov di,2000h ;建立目的地指针mov cx,100 ;设置计数器nt:mov al,[si] ;取数mov [di],al ;送数inc si ;调整指针inc didec cx ;计数器减1jne nt ;CX-1≠0转nt 标号另一种方法:提示:若将倒数第2、3行用 REP MOVSB代替,则可进一步简化。
MOV AX,3000HMOV DS,AXMOV ES,AXMOV SI,0100HMOV DI,0200HMOV CX,100CLDNT:MOVSBLOOP NTINT 20H2.多字节的加法:问题描述:有两个4字节的无符号数相加,这两个数分别放在2000H和3000H开始的存储单元中,低位在前,高位在后。
运算后,得到的和放在2000H开始的内存单元中。
代码:MOV SI,2000H ;取第一个数的首地址MOV AX,[SI] ;将第一个数的低16位取到AXMOV DI,3000H ;取第二个数的首地址ADD AX,[DI] ;两个数的低16位相加。
MOV [SI],AX ;低16位相加的结果送到2000H和2001H单元MOV AX,[SI+2] ;取第一个数的高16位送到AX中ADC AX,[DI+2] ;两个数的高16位连同CF相加MOV [SI+2],AX ;高16位相加的结果送到2002H,2003H单元。
3.多字节组合BCD码十进制加法问题描述:设第一个数据在1000H开始的8个内存单元中,第二个数据在2000H开始的8个内存单元中,要求相加之后将结果放在2000H开始的内存区域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一,在数据段从TABLE开始定义10无符号的数据,每个数据为一个字节,计算这10个数的和,结果放到SUM字单元之中
DA TA SEGMENT
TABLE DB 12H, 23H, 34H, 45H, 56H
DB 67H, 78H, 89H, 9AH, 0FDH
SUM DW
DA TA ENDS
STACK SEGMENT
D8 5 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: STACK
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV AX,STACK
MOV SS, AX
LEA SI, TABLE
MOV CX, 10
XOR AX, AX
NEXT: ADD AL , 0
INC SI
LOOP NEXT
MOV SUM, AX
MOV AH, 4CH
INT 21H
CODE ENDS
ENDS START
二,在数据段自TABLE开始的连续10个单元中有放在0-9的平方值,查表求任意数X (0<=X<=9)的平方值,并将结果放到RESULT中
三,在数据段定义2个数据,每个数据占有若干字节,按照低地址存储低数据位的原则存储,这两个数据长度一样,计算这2个数据的和,并将结果放到RESULT中。
四、用8255PA作开关量输入口,PB作输出口。
CODE SEGMENT
ASSUME CS:CODE ,DS:CODE ,ES:CODE
ORG 32E0H
PA EQU 0FFD8H
PB EQU 0FFD9H
PC EQU 0FFDAH
PCTL EQU 0FFDBH
HI:MOV DX,PCTL
MOV AL,90H
OUT DX,AL
PI:MOV DX,PA
IN AL,DX
INC DX
OUT DX,AL
JMP PI
CODE ENDS
END HI。