当前位置: 首页 > news >正文

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误

原理图设计

汇编代码

; I/O 端口地址定义
IOY0 EQU 0600H 
IOY1 EQU 0640H 
IOY2 EQU 0680HMY8255_A EQU IOY0+00H*2     ; 8255 A 口端口地址
MY8255_B EQU IOY0+01H*2     ; 8255 B 口端口地址
MY8255_C EQU IOY0+02H*2     ; 8255 C 口端口地址
MY8255_MODE EQU IOY0+03H*2  ; 8255 模式控制端口地址MY8253_COUNT0 EQU IOY1+00H*2 ;8053 计时器0端口地址
MY8253_COUNT1 EQU IOY1+01H*2 ;8053 计时器1端口地址
MY8253_COUNT2 EQU IOY1+02H*2 ;8053 计时器2端口地址
MY8253_MODE EQU IOY1+03H*2 ;8253 模式控制端口地址MY8259_ODD EQU IOY2
MY8259_EVEN EQU IOY2+01H*2CODE SEGMENTASSUME CS:CODE, DS:DATA,SS:STACK1START:MOV AX,STACK1MOV SS,AXMOV AX,0000HMOV DS,AX;写NMI中断(重置)向量表MOV AX,OFFSET INTNMIMOV SI,02H*4MOV [SI],AXMOV AX,CSMOV [SI+2],AX;写0号中断(慢速)向量表MOV AX,OFFSET INT0MOV SI,20H*4MOV [SI],AXMOV AX,CSMOV [SI+2],AX;写1号中断(快速)向量表MOV AX,OFFSET INT1MOV SI,21H*4MOV [SI],AXMOV AX,CSMOV [SI+2],AX;写2号中断(超时)向量表MOV AX,OFFSET INT2MOV SI,22H*4MOV [SI],AXMOV AX,CSMOV [SI+2],AX;写3号中断(失败)向量表MOV AX,OFFSET INT3MOV SI,23H*4MOV [SI],AXMOV AX,CSMOV [SI+2],AX;这时候再装入数据段,之前让DS段超越是0000(中断向量表特有的要求)MOV AX,DATAMOV DS, AX   ;8255工作方式MOV AL,90H ;A输入 B输出 C输出MOV DX,MY8255_MODE OUT DX,AL;8253工作方式 //写在8259前正好ignore掉定时器2因为装载工作字产生的第一次跳变MOV DX, MY8253_MODEMOV AL, 00110100B ;定时器0,双字节,方式3OUT DX, ALMOV AL,01111000B ;定时器1,双字节,方式4OUT DX,ALMOV AL, 10110100B ;定时器2,双字节,方式2OUT DX,AL;8259工作方式MOV AL,13HMOV DX,MY8259_ODDOUT DX,ALMOV DX,MY8259_EVENMOV AL,20HOUT DX,ALMOV AL,01HOUT DX,ALMOV AL,0E0HOUT DX,ALRESET:STIMOV RESETR,0MOV SCORER,0MOV FAILR,0;8255初始化;B全1MOV AL,0FFH ;B输出全1MOV DX,MY8255_BOUT DX,AL;PC7(发声器)无效,数码管,老鼠灯全部有效MOV AL,00H MOV DX,MY8255_COUT DX,AL;8253初始化;计数器1 60秒一次性中断信号MOV AX,TIMEMOV BX,1000MUL BXMOV DX,MY8253_COUNT1OUT DX,ALMOV AL,AHOUT DX,AL;计数器2 SPEED秒一次老鼠信号MOV AX,SPEEDMOV BX,1000MUL BX MOV DX,MY8253_COUNT2OUT DX,ALMOV AL,AHOUT DX,AL;主工作循环
A0:CALL SHOWDATA ;显示数据CALL SCAN ;扫描键盘CMP ENDR,1JE EDJMP NED
ED:CLI MOV DX,MY8255_CMOV AL, 07FHOUT DX,ALMOV DX,MY8255_BMOV AL,00HOUT DX,ALJMP A0
NED:  CMP RESETR,1JE RESETJMP A0;NMI号中断,处理重置,完成
INTNMI PROCCLIMOV RESETR,1MOV ENDR,0STIIRET
INTNMI ENDP; 0号中断,摸鱼模式,完成
INT0 PROCCLICMP MODE, 0JZ A1MOV SPEED, 5CALL SETSPEEDMOV AL,20HMOV DX,IOY2OUT DX,ALSTI
A1: IRET 
INT0 ENDP
; 1号中断,鸡血模式,完成
INT1 PROCCLICMP MODE, 1JZ A2MOV SPEED, 2CALL SETSPEED ;修改游戏速度MOV AL,20HMOV DX,IOY2OUT DX,ALSTI
A2: IRET
INT1 ENDP; 2号中断,计时结束,完成
INT2 PROCCLIMOV ENDR,1MOV AL,20HMOV DX,IOY2OUT DX,ALSTIIRET
INT2 ENDP; 3号中断,老鼠
INT3 PROCCLICMP ALIVE, 0JZ A3 JMP A4A3: ;若老鼠死了MOV ALIVE,1;死老鼠复活MOV SOLVE,1CALL RANDMOV AL,20HMOV DX,IOY2OUT DX,ALSTIIRETA4: ;若老鼠活着MOV ALIVE,0;杀死老鼠XOR AL,ALMOV AL,SOLVEADD AL,FAILRCMP AL, 2JNA A9MOV ENDR,1
A9:   MOV FAILR,ALMOV AL,20HMOV DX,IOY2OUT DX,ALSTIIRET
INT3 ENDP; 生成0到5的随机数,并将其转换成老鼠放在RATR中
RAND PROC; 线性同余法参数MOV AX, [SEED]       ; 加载当前种子MOV BX, 110355      ; 乘数IMUL BX              ; AX = AX * BX,结果存储在 DX:AXADD AX, 12345       ; 加增量 cMOV BX, 6           ; 限制范围到 0-5XOR DX, DX           ; 清空 DXDIV BX               ; (DX:AX) / BX,余数在 DXMOV SEED, AX       ; 更新种子MOV AL, DL ; 保存灯号(余数)ADD AL,1MOV RATR,ALRET
RAND ENDPDALLY2 PROC ;防抖延迟D0: MOV CX, 8D1: MOV AX, 7D2: DEC AXJNZ D2LOOP D1DEC DLJNZ D0RET
DALLY2 ENDP; 胜利处理过程
WIN PROCINC SCORERMOV SOLVE, 0WIN_LODE: ;打开蜂鸣器,加载音乐MOV DX,MY8255_CMOV AL,11111111B;OUT DX,ALMOV SI, OFFSET WIN_FREQ_LISTMOV DI, OFFSET WIN_TIME_LISTWIN_PLAY: ;播放音乐MOV DX, 0FHMOV AX, 4240HDIV WORD PTR [SI]MOV DX, MY8253_COUNT0OUT DX, ALMOV AL, AHOUT DX, ALMOV DL, [DI]CALL DALLY3ADD SI, 2INC DICMP WORD PTR [SI], 0JE NOTWINJMP WIN_PLAYNOTWIN:MOV DX,MY8255_CMOV AL,01111111B;OUT DX,ALRET
WIN ENDP; 失败处理过程
LOSE PROCINC FAILRMOV SOLVE, 0CMP FAILR, 2JNA NOTEDMOV ENDR, 1NOTED:    
LOSE_LODE: ;打开蜂鸣器,加载音乐MOV DX,MY8255_CMOV AL,11111111B;OUT DX,ALMOV SI, OFFSET LOSE_FREQ_LISTMOV DI, OFFSET LOSE_TIME_LISTLOSE_PLAY: ;播放音乐MOV DX, 0FHMOV AX, 4240HDIV WORD PTR [SI]MOV DX, MY8253_COUNT0OUT DX, ALMOV AL, AHOUT DX, ALMOV DL, [DI]CALL DALLY3ADD SI, 2INC DICMP WORD PTR [SI], 0JE NOTLOSEJMP LOSE_PLAYNOTLOSE:MOV DX,MY8255_CMOV AL,01111111B;OUT DX,ALRET
LOSE ENDPSETSPEED PROC ;设定游戏速度MOV AX, SPEEDMOV BX,1000MUL BXMOV DX, MY8253_COUNT2OUT DX, ALMOV AL,AHOUT DX,ALRET
SETSPEED ENDPSHOWDATA PROC ;展示数据到数码管CALL PUTBUFCALL DISDATARET
SHOWDATA ENDPDISDATA PROC ;读取缓冲区,数码管显示MOV SI, 3005H       ; 将SI寄存器指向显示缓冲区起始地址MOV CX,6
AGAIN: MOV AL,1DEC CLROL AL,CLINC CLNOT ALAND AL,01111111BMOV DX, MY8255_C    ;位选OUT DX, AL          ; 输出显示码到端口CMOV AL, [SI]        ; 读取缓冲区中的字符MOV BX, OFFSET DTABLEAND AX, 00FFH       ; 获取字符的低字节ADD BX, AX          ; 计算DTABLE的偏移地址MOV AL, [BX]        ; 读取显示码MOV DX, MY8255_BOUT DX, AL          ; 输出显示码到端口BCALL DALLYDEC SI              ; 移动到下一个缓冲区位置LOOP AGAIN           ; 继续输出字符CMP ALIVE,0JE OMITMOV AL,00111111BMOV DX,MY8255_COUT DX,ALMOV AL, RATR        ; 读取老鼠位置MOV BX, OFFSET DTABLEAND AX, 00FFH       ; 获取字符的低字节ADD BX, AX          ; 计算DTABLE的偏移地址MOV AL, [BX]        ; 读取显示码MOV DX, MY8255_BOUT DX, AL          ; 输出显示码到端口BCALL DALLYOMIT:    RET                 ; 返回
DISDATA ENDP
PUTBUF PROC ;写入缓冲区;读计数器1(游戏时间)计数器值;MOV AL,80H;MOV DX,MY8253_MODE ;锁存;OUT DX,AL;MOV DX,MY8253_COUNT1;IN AL,DX;MOV AH,AL;IN AL,DX;XCHG AH,AL ;读出计数值;XOR DX,DX;MOV BX,1000 ;DIV BX ;得到秒数MOV SI, 3000H;MOV BL,10;DIV BL;此时AH是余数个位,AL是十位MOV AL,0MOV AH,0MOV [SI], ALMOV [SI+1], AHXOR AH,AHMOV AL,SCORERMOV BL,10DIV BL;此时AH是余数个位,AL是十位MOV [SI+2], ALMOV [SI+3], AHXOR AH,AHMOV AL,FAILRMOV BL,10DIV BL;此时AH是余数个位,AL是十位MOV [SI+4], ALMOV [SI+5], AHRET
PUTBUF ENDPDALLY PROC ;显示延迟PUSH CX             ; 保存CX寄存器的值MOV CX, 8      ; 设置延时计数器
T1: MOV AX, 40       ; 进入内层循环
T2: DEC AX              ; 递减AXJNZ T2              ; 如果AX不为零,继续循环LOOP T1             ; 每次循环,CX寄存器减1POP CX              ; 恢复CX寄存器的值RET                 ; 返回
DALLY ENDP
DALLY3 PROC ;音乐延时PUSH CXPUSH AX
A6:    MOV CX,16
A7:MOV AX,200
A8:DEC AX JNZ A8LOOP A7DEC DLJNZ A6POP AXPOP CXRET 
DALLY3 ENDP 
CLEAR PROCMOV DX, MY8255_BMOV AL, 00HOUT DX, AL            ; 清除显示数据RET
CLEAR ENDPSCAN PROC ;扫描按键MOV DX,MY8255_AIN AL,DXNOT ALAND AL, 00111111BMOV HITR,ALCMP HITR, 0JZ A5CALL DALLY2CMP HITR,0JZ A5 ;防抖JNZ DICIDE
A5:RET
SCAN ENDPDICIDE PROC ;决策函数CMP ALIVE,1JNE DICIDEL; 将HITR和RATR加载到AL和BL中MOV AL, HITRMOV BL, RATRDEC BL; 将RATR转换成对应的位掩码XOR CX, CX      ; 清除CX,用于计数MOV CL, BL      ; 将RATR的值移动到CL作为循环计数MOV BH, 01H     ; 准备初始掩码00000001bROL BH,CLCOMPARE:AND AL, BH      ; 比较HITR和转换后的RATR掩码JNZ DICIDEW         ; 如果两个值相等,跳转到WINJMP DICIDEL        ; 否则跳转到LOSE
DICIDEW:CALL WINRET
DICIDEL:CALL LOSERET
DICIDE ENDPCODE ENDSSTACK1 SEGMENT PARA STACKDW 1000H DUP(?)
STACK1 ENDSDATA SEGMENT; 数据段定义 ;时间相关TIME DW 60      ; 游戏时间设置 60SSPEED DW 5 ;老鼠出现时间间隔 5s;计数相关;时间计数器由计数器2负责SCORER DB 1       ; 打中地鼠的数量计数器FAILR DB 2   ; 失败次数计数器MODE DB 0 ;游戏模式,0摸鱼模式,1鸡血模式;重置相关RESETR DB 0 ;重置表示,1重置;结束相关ENDR DB 0 ;结束表示,1结束;音乐相关WIN_FREQ_LIST DW 1100, 800,0LOSE_FREQ_LIST DW 392, 120,0WIN_TIME_LIST DB 1,1LOSE_TIME_LIST DB 1,1;老鼠存在相关ALIVE DB 0;老鼠存在表示,1存在;决策相关RATR DB 0HITR DB 0SOLVE DB 0;数码管相关DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH  ; 0~9的显示码; LCG 参数SEED DW 12345D ; 生成随机数种子DATA ENDS
END START

Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误的可能解决方案

  1. 没用的电路要断开,或者连了外设就要写控制方式字
  2. 数据段要在写完中断向量表之后装载到DS中(这里主要是因为用了DS:SI)
  3. 使用单片8259也要写ICW4
  4. 数据段放在代码段后面
  5. 栈开大一点
  6. 8086内存给够

相关文章:

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...

MySQL如何执行.sql 文件:详细教学指南

在使用MySQL数据库过程中,我们经常需要执行包含SQL语句的.sql文件。这些文件通常用于数据库的备份和恢复或批量执行SQL脚本。本文将详细介绍如何在不同环境下执行MySQL的.sql文件。 前置准备 在开始之前,请确保以下条件已经满足: 已经安装…...

非周期性脑活动的动态重构支持癫痫患者的认知功能:一种神经指纹识别方法

摘要 颞叶癫痫(TLE)的特征是大脑活动模式发生大规模的变化,并且这种变化与患者的认知功能受损密切相关。本研究旨在使用神经指纹方法分析大脑活动的动态重构,以描绘TLE患者的个体特征及其认知功能相关性。本研究收集了68名TLE患者和34名对照组的10min静息…...

ZYNQ初识6(zynq_7010)clock时钟IP核

基于板子的PL端无时钟晶振,需要从PS端借用clock1(50M)晶振 接下去是自定义clock的IP核封装,为后续的simulation可以正常仿真波形,需要注意顶层文件的设置,需要将自定义的IP核对应的.v文件设置为顶层文件&a…...

使用MFC编写一个paddleclas预测软件

目录 写作目的 环境准备 下载编译环境 解压预编译库 准备训练文件 模型文件 图像文件 路径整理 准备预测代码 创建预测应用 新建mfc应用 拷贝文档 配置环境 界面布局 添加回cpp文件 修改函数 报错1解决 报错2未解决 修改infer代码 修改MFCPaddleClasDlg.cp…...

SAP SD BP名称和销售订单描述的对应不起来的问题

问题 VBPA-ADRNR地址 和 KNA1-ADRNR 指向同一个号码 销售订单读取这个地址 改正后恢复正常 原因:推测 应该是创建Y0 电商客户的时候,引起锁和混乱导致的。 具体实际时什么样,不太清楚 写于20241230 浙江台州...

FlastOcc-网络复现-1.环境配置及问题

研究OCC网络 1.RuntimeError: Ninja is required to load C extensions RuntimeError: Ninja is required to load C extensions #32 Ninja is required to load C extensions File “/FlashOCC/projects/mmdet3d_plugin/core/evaluation/ray_metrics.py”, line 12, in dvr …...

Go语言中值接收者和指针接收者的区别?

在 Go 语言中,值接收者和指针接收者是方法定义中的两种接收者类型。它们的主要区别在于方法调用时的行为、接收者是否可以被修改,以及性能上的差异。 值接收者 定义 值接收者的方法接收的是调用对象的一个副本,方法内部对该副本的修改不会影…...

kafka小实站

需要先在前面的文章里面照着下载好kafka,并且启动 先启动zookeeper 项目目录 package kafka; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import…...

基于Python实现车辆检测、机动车检测、识别位置标记、计数

目录 引言背景与应用场景车辆检测的研究意义相关工作车辆检测概述机动车检测方法分类基于传统计算机视觉的检测方法基于深度学习的检测方法技术与方法车辆检测技术概述基于Python的车辆检测方法图像处理与特征提取深度学习方法(如YOLO、SSD、Faster R-CNN等)数据集与标注常用…...

心理学硕士

心理学硕士的主要研究方向包括基础心理学、发展心理学和应用心理学‌。 基础心理学研究一般的心理现象与规律,如心理的实质及神经机制、感觉与知觉、意识与注意、学习与记忆、思维与语言、情绪与意识、人格等‌。发展心理学研究人类个体心理发生发展的特点和规律&a…...

python量化分析学习与实践1:API接口篇

业内比较流行的几款API数据接口,有聚宽、TuShare,yfinance,以及pandas的pandas_datareader等。国内的一般都需要用户认证,才能下载数据。国外的yfinance与pandas_datareader等则不需要,但需要科学上网。 聚宽 测试下…...

【GO基础学习】gin的使用

文章目录 模版使用流程参数传递路由分组数据解析和绑定gin中间件 模版使用流程 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context&#x…...

网卡状态变更,virtio-net检测

实现方案: 现在在amp模式下linux端有个真实的物理网卡eth0,有一个虚拟网卡virtio-net0后端,此时需要一种机制,将真实物理网卡的状态发送rtos的virtio-net0前端。这里使用register_netdevice_notifier机制,每个virtio-n…...

中华人民共和国保守国家秘密法

中华人民共和国保守国家秘密法 (1988年9月5日第七届全国人民代表大会常务委员会第三次会议通过 2010年4月29日第十一届全国人民代表大会常务委员会第十四次会议第一次修订 2024年2月27日第十四届全国人民代表大会常务委员会第八次会议第二次修订) 目…...

ELK日志收集系统部署

1、 ElasticSearch部署 Elastic — 搜索 AI 公司 | Elastic 系统类型:Centos7.4 节点IP:172.16.246.234 软件版本:jdk-8u191-linux-x64.tar.gz、elasticsearch-6.5.4.tar.gz 示例节点:172.16.246.234 1、安装配置jdk8 ES运行依…...

3D线上艺术展:艺术与技术的完美融合

随着数字技术的飞速发展,未来的艺术展览正逐步迈向线上线下融合的新阶段。其中,3D线上展览以其独特的魅力,成为线下展览的延伸与拓展,为艺术爱好者们开辟了全新的观赏途径。 对于艺术家和策展人而言,3D线上展览不仅打…...

TiDB 的MPP架构概述

MPP架构介绍: 如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接…...

Leetcode 10-正则表达式匹配/ 剑指 Offer 19. 正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。 题解 字符串匹配多…...

FFmpeg 编码和解码

文章目录 音频格式AACADIF音频数据交换格式ADTS音频数据传输流 音频解码音频编码 视频格式H264GOP图像组I帧,P帧,B帧H264压缩技术H264压缩级别H264视频级别H264码流结构SPSPPS 解码视频编码视频 音频格式 AAC AAC全称 Advanced Audio Coding&#xff0…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...