在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → 北邮信通微机原理软件实验代码包

北邮信通微机原理软件实验代码包

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.17M
  • 下载次数:7
  • 浏览次数:182
  • 发布时间:2019-05-12
  • 实例类别:C/C++语言基础
  • 发 布 人:crazycode
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 代码 软件 实验

实例介绍

【实例简介】北京邮电大学信息与通信工程学院微机原理课程随课软件实验部分全部实验代码。

【实例截图】

from clipboard

【核心代码】

;----微原软件实验四代码---- 

;----数据段定义----
DATA    SEGMENT

INPUTTIP DB 'PLEASE INPUT THE DIVIDEND  (32)',0AH,0DH,'$';输入被除数提示
INPUT2TIP DB 0AH,0DH,'PLEASE INPUT THE DIVISOR (16)',0AH,0DH,'$';输入除数提示
ERRORTIP DB 0AH,0DH,' INPUT ERROR',0DH,0AH,'$';输入错误提醒
ERROR2TIP  DB  0AH,0DH,'DIVISOR EQUALS 0.',0DH,0AH,'$';除数为零提示
OUTPUTTIP DB 0AH,0DH,'THE QUOTIENT IS:','$';商输出
OUTPUT2TIP DB 0AH,0DH,'THE REMAINDER IS:','$';余数输出 
DATA    ENDS 

;----堆栈段定义----
STACK   SEGMENT   STACK 'STACK'
    DB 100 DUP(0)	 
STACK   ENDS  

;----代码段定义----
CODE    SEGMENT
	ASSUME CS:CODE, SS:STACK, DS:DATA, ES:CODE
START	PROC FAR	
	PUSH DS;入栈保护
	MOV AX,0
	PUSH AX
	MOV AX,DATA
	MOV DS,AX
	STI;TF中断标志置1
	MOV AL,0;保存原中断向量
	MOV AH,35H
	INT 21H
	PUSH ES
	PUSH BX
	
	PUSH DX;写中断向量表
	MOV AX,SEG INT00
	MOV DS,AX
	MOV DX,OFFSET INT00
	MOV AL,0
	MOV AH,25H
	INT 21H
	POP DS 
	
	MOV AH,09H
	MOV DX,SEG INPUTTIP;提示输入32位二进制0或1
	MOV DS,DX
	MOV DX,OFFSET INPUTTIP
	INT 21H
	MOV CX,10H
	MOV AX,0000H
	PUSH AX
	
CIN:MOV AH,01H;接收输入
	INT 21H
	CMP AL,'0';输入数字与0比较
	JZ JUMP1
	CMP AL,'1';输入数字与1比较
	JNZ ERROR1;输入有误则跳错误显示程序
	STC;为1则将CF置1
	
	RCL DX,1;DX左移,移进一个1
	LOOP CIN
	JMP JUMP2
	
JUMP1:CLC;为0则将CF置0
	RCL DX,1;DX左移,移进一个0
	LOOP CIN

JUMP2:MOV CX,10H

CIN2:MOV AH,01H;接收输入
	INT 21H
	CMP AL,'0'
	JZ JUMP3
	CMP AL,'1'
	JNZ ERROR2
	STC
	POP AX
	RCL AX,1
	PUSH AX
	LOOP CIN2
	JMP TIP
	
JUMP3:POP AX
	CLC
	RCL AX,1
	PUSH AX
	LOOP CIN2
	
TIP:	MOV AH,09H
	MOV DX,SEG INPUT2TIP;提示输入16位0或1除数
	MOV DS,DX
	MOV DX,OFFSET INPUT2TIP
	INT 21H
	MOV CX,10H
	
JUMP4:	MOV AH,01H
	INT 21H
	CMP AL,'0'
	JZ JUMP5
	CMP AL,'1'
	JNZ ERROR2
	STC
	RCL BX,1
	LOOP JUMP4
	JMP JUMP6
	
JUMP5:	CLC
	RCL BX,1
	LOOP JUMP4
	JMP JUMP6
	
ERROR1: MOV AH,09H;输入错误提示
	MOV DX,SEG ERRORTIP
	MOV DS,DX
	MOV DX,OFFSET ERRORTIP
	INT 21H
	JMP CIN
	
ERROR2: MOV AH,09H
	MOV DX,SEG ERRORTIP
	MOV DS,DX
	MOV DX,OFFSET ERRORTIP
	INT 21H
	JMP TIP
	
JUMP6:	MOV CX,0000H
	POP AX
	DIV BX							
	CMP BX,20H
	JZ RE
	PUSH DX
	PUSH AX
	MOV AH,09H
	MOV DX,SEG OUTPUTTIP
	MOV DS,DX
	MOV DX,OFFSET OUTPUTTIP;商输出显示
	INT 21H
	MOV BX,08H 
	CALL SHOW
	MOV BX,08H 
	POP CX
	CALL SHOW
	
	MOV AH,09H
	MOV DX,SEG OUTPUT2TIP
	MOV DS,DX
	MOV DX,OFFSET OUTPUT2TIP;余数输出显示
	INT 21H 
	MOV BX,08H
	POP CX
	CALL SHOW
	
RE: POP DX;恢复中断向量表
	POP CX
	PUSH DS
	MOV DS,CX
	MOV AL,0
	MOV AH,25H
	INT 21H
	POP DS
	RET
START ENDP
	
SHOW PROC NEAR	
NEXT1:TEST CX,10000000B
	JZ NEXT2
	MOV AH,02H
	MOV DL,'1'
	INT 21H
	SAL CX,1
	DEC BX
	JNZ NEXT1 
	JMP NEXT3
NEXT2:	MOV AH,02H
	MOV DL,'0'
	INT 21H
	SAL CX,1
	DEC BX
	JNZ NEXT1 
NEXT3:RET
SHOW ENDP
 
INT00	PROC FAR;修改后的中断服务子程序
	POP CX;修改返回地址
	ADD CX,2
	PUSH CX
	CMP BX,0
	JNE NEXT
	
	MOV AH,09H
	MOV DX,SEG ERROR2TIP;除数为0,显示错误信息
	MOV DS,DX
	MOV DX,OFFSET ERROR2TIP
	INT 21H
	MOV BX,20H
	JMP FINISH;	退出
	
NEXT:	PUSH AX;做除法,被除数低16位AX暂存于堆栈
	MOV DX,AX;被除数高16位改为低16位
	MOV DX,0;被除数高16位为0
	DIV BX;	第一次除法
	MOV CX,AX;保存高16位的商于CX
	 POP AX;恢复低16位被除数,高16位是上次的余数
	DIV BX;商是CX:AX,余数是DX	 
FINISH:IRET
INT00 ENDP
;----程序结束---- 
CODE ENDS
	 END START

标签: 代码 软件 实验

实例下载地址

北邮信通微机原理软件实验代码包

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警