广工微机实验代码(部分)
- 格式:doc
- 大小:95.00 KB
- 文档页数:30
.486DATA SEGMENT AT 0 USE16;8255芯片的地址PORTA EQU 203H PORTB EQU 207H PORTC EQU 20BH CONTROL55 EQU 20FH;8253的地址CONTROL53 EQU 30CH COUNT0 EQU 300H COUNT1 EQU 304H COUNT2 EQU 308H;8259地址OPORT EQU 3A0H JPORT EQU 3A8H;中断向量地址ZDXL EQU 20H;ADC0809地址IN0 EQU 3C0HIN1 EQU 3C4HIN2 EQU 3C8HIN3 EQU 3CCHIN4 EQU 3D0HIN5 EQU 3D4HIN6 EQU 3D8HIN7EQU 3DCH;273地址PORTAB EQU 340H PORTBIT EQU 360H;切换标志位SMG DB 00HCONST DB 00HAD DB 00H;锅炉1号数据缓冲区ORG 4000HDATA1 DB 256 DUP(00H);锅炉2号数据缓冲区ORG 4400HDATA2 DB 256 DUP(00H);拆字缓冲区SEPARATEDATE DB 10 DUP(00H) ;显示缓冲区DISPDATE DB 10 DUP(00H) ;计数0COUNT0 DW 00H;计数1COUNT1 DW 00H;7段码TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,39H,5EH,79H,71HDATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 512 DUP(00H)STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXXOR AX,AXMOV SS,AXMOV SP,1000HINIT8253:MOV AL,36HMOV DX,CONTROL53OUT DX,ALMOV AX,30000MOV DX,COUNT0OUT DX,ALMOV AL,AHOUT DX,ALINIT5255:MOV DX,CONTROL55MOV AL,80HOUT DX,ALSETVECT:MOV DI,0MOV DX,OFFSET TIMER ;定时器中断向量地址MOV ZDXL[DI],DXMOV DX,CSMOV ZDXL[DI+2],DXMOV DX,OFFSET ADC0809 ;ADC0809中断向量地址MOV ZDXL[DI+4],DXMOV DX,CSMOV ZDXL[DI+6],DXMOV DX,OFFSET KEY1 ;KEY1中断向量地址MOV ZDXL[DI+8],DXMOV DX,CSMOV ZDXL[DI+10],DXMOV DX,OFFSET KEY2 ;KEY2中断向量地址MOV ZDXL[DI+12],DXMOV DX,CSMOV ZDXL[DI+14],DXINIT8259:MOV AL,00010011BMOV DX,OPORTOUT DX,ALMOV AL,00100000B;20H ;ICW1MOV DX,JPORTOUT DX,ALMOV AL,00001101B ;ICW2OUT DX,ALMOV AL,00001101B ;ICW4OUT DX,ALMOV AL,00000000B ;0CW1OUT DX,ALMOV AL,20H ;EOI非自动结束MOV DX,OPORTOUT DX,ALMOV SI,4000HMOV DI,4200HAGAIN:STIMOV AL,[SI]CMP AL,24JNB DETECTION0 ;检测锅炉1是否超过温度限制AND AL,0FEHMOV DX,PORTAOUT DX,ALDETECTION0:CMP AL,184JB DETECTION1AND AL,0FDHOUT DX,ALDETECTION1:MOV AL,[DI]CMP AL,24JNB DETECTION2 ;检测锅炉2是否超过温度限制AND AL,0FBHMOV DX,PORTAOUT DX,ALDETECTION2:CMP AL,184JB DETECTION3AND AL,0F7HOUT DX,ALDETECTION3:LEA BX,SEPARATEDATE ;标志位检测ADD BX,05HMOV AL,CONSTCMP AL,01HJZ SHOWONECMP AL,02HJZ SHOWTWOMOV AL,SMGCMP AL,00HJZ CHGONECMP AL,01HJZ CHGTWOSHOWONE: ;选择要显示的数据和锅炉号码MOV AL,[SI]MOV [BX],01HJMP SEPARATESHOWTWO:MOV AL,[DI]MOV [BX],02HJMP SEPARATECHGONE:MOV AL,[SI]MOV [BX],01HJMP SEPARATECHGTWO:MOV AL,[DI]MOV [BX],02HSEPARATE:CALL SEPARATEBITCALL DISPLAYMOV AL,00HMOV DX,JPORTOUT DX,ALMOV AL,00HMOV CONST,ALJMP AGAINSEPARATEBIT PROC ;将数据转换成BCD码,然后拆字,存储PUSH SIMOV BL,05HMUL BLMOV BL,04HDIV BLMOV BX,60ADD AX,BXLEA SI,SEPARATEDATEMOV BL,10DIV BLMOV [SI],AHINC SIXOR AH,AHDIV BLMOV [SI],AHINC SIMOV [SI],ALINC SIMOV [SI],00HINC SIMOV [SI],00HPOP SIRETSEPARATEBIT ENDPDISPLAY PROC ;显示锅炉数据PUSH CXPUSH DXPUSH SIPUSH AXLEA BX,TABLEA SI,SEPARATEDATEMOV AH,0C1H DISP:MOV DX,PORTBITMOV AL,AHOUT DX,ALMOV DX,PORTABMOV AL,[SI]XLATOUT DX,ALMOV CX,0200HLOOP $INC SISAL AH,1OR AH,0C0HCMP AH,0C0HJNZ DISPPOP AXPOP CXPOP DXPOP SIRETDISPLAY ENDPTIMER PROCPUSH AXPUSH DXMOV AX,COUNT0INC AXCMP AX,300JB OVER0MOV AX,00HMOV COUNT0,AXMOV DX,IN3OUT DX,ALMOV AL,01HMOV AD,ALJMP ADCHARACT OVER0:MOV COUNT0,AX ADCHARACT:MOV AX,COUNT1INC AXCMP AX,500JB OVER1MOV AX,00HMOV COUNT1,AXMOV AL,SMGXOR AL,01HMOV SMG,ALJMP SMGCHARACT OVER1:MOV COUNT1,AX SMGCHARACT :MOV AL,20HMOV DX,OPORTOUT DX,ALPOP DXPOP AXIRETTIMER ENDPADC0809 PROCPUSH AXPUSH DXMOV AL,ADCMP AL,01HJNZ ADC0MOV DX,IN3IN AL,DXMOV [SI],ALINC SIMOV AL,00HMOV AD,00HJMP ADC1ADC0:MOV DX,IN4IN AL,DXMOV [DI],ALINC DIJMP ADC2ADC1:MOV DX,IN4OUT DX,AL ADC2:MOV AL,20HMOV DX,OPORTOUT DX,ALPUSH DXPUSH AXIRETADC0809 ENDP KEY1 PROCPUSH AXMOV AL,CONST CMP AL,02HJZ KK0MOV AL,01H MOV CONST,AL KK0:MOV AL,04H MOV DX,JPORT OUT DX,ALMOV AL,20H MOV DX,OPORT OUT DX,ALPOP AXIRETKEY1 ENDPKEY2 PROCPUSH AXMOV AL,CONST CMP AL,01HJZ KK1MOV AL,02H MOV CONST,AL KK1:MOV AL,08H MOV DX,JPORT OUT DX,ALMOV AL,20H MOV DX,OPORT OUT DX,ALPOP AXIRETKEY2 ENDP CODE ENDS END START。
微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。
命令运行调试。
二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。
是对目标文件进行调试,验证它的正确性。
2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。
G代码(G-code,又称RS-274)是广泛使用的数控(numerical control)编程语言,有多个版本,主要在计算机辅助制造中用于控制自动机床。
G代码有时候也称为G编程语言。
而M代码定义为,辅助功能代码。
M代码起到机床的辅助控制作用。
那么G代码有哪些呢?M代码有哪些呢?一起来看看G代码内容G00 快速定位G01 直线插补G02 圆弧插补G03 圆弧插补G04 暂停G13 刀架选择:刀架AG14 刀架选择:刀架BG17 刀具半径补偿:X-Y平面G18 刀具半径补偿:Z-X平面G19 刀具半径补偿:Y-Z平面G20 原始位置指令G21 ATC原始位置指令G22 扭距跳过指令G24 ATC原始位置移动指令(不带直线插补)G25 节点位置移动指令(不带直线插补)G28 扭距极限指令取消G29 扭距极限指令G30 跳步循环G31 固定螺纹车削循环:轴向G32 固定螺纹车削循环:端面G33 固定螺纹车削循环G34 变螺距螺纹车削循环:增加螺距G35 变螺距螺纹车削循环:减少螺距G36 动力刀具轴-进给轴同步进给(正转) G37 动力刀具轴-进给轴同步进给(反转) G40 刀尖圆狐半径补偿: 取消G41 刀尖圆狐半径补偿: 左G42 刀尖圆狐半径补偿: 右G50 零点位移,主轴最高转速指令G52 六角刀架转位位置误差补偿G62 镜像指令G64 到位控制关G65 到位控制开G71 复合固定螺纹车削循环: 轴向G72 复合固定螺纹车削循环: 径向G73 轴向铣槽复合固定循环G74 径向铣槽复合固定循环G75 自动倒角G76 自动倒圆角G77 攻丝复合固定循环G78 反向螺纹攻丝循环G80 形状定义结束(LAP)G81 轴向形状定义开始(LAP)G82 径向形状定义开始(LAP)G83 坯材形状定义开始(LAP)G84 棒料车削循环中改变切削条件(LAP) G85 调用棒料粗车循环(LAP)G86 调用重复粗车循环(LAP)G87 调用精车循环(LAP)G90 绝对值编程G91 增量编程G94 每分进给模式(mm/min)G95 每转进给模式(mm/rev)G96 恒周速切削开G97 G96取消G100 刀架A或刀架B单独切削的优先指令G101 创成加工中直线插补G102 创成加工中圆弧插补(正面) (CW) G103 创成加工中圆弧插补(正面) (CCW) G107 主轴同步攻丝,右旋螺纹G108 主轴同步攻丝,左旋螺纹G110 刀架A恒周速切削G111 刀架B恒周速切削G112 圆弧螺纹车削CWG113 圆弧螺纹车削CCWG119 刀具半径补尝:C-X-Z平面G122 刀架A副主轴W轴指令(13)G123 刀架B副主轴W轴指令(G14)G124 卡盘A有效原点G125 卡盘B有效原点G126 锥度加工模式OFF指令G127 锥度加工模式ON指令G128 M/C加工模式OFF指令G129 M/C加工模式ON指令G132 创成加工中圆弧插补(侧面) (CW) G133 创成加工中圆弧插补(侧面) (CCW) G136 坐标反转结束或Y轴模式关G137 坐标反转开始G138 Y轴模式开G140 主轴加工模式的指定G141 副主轴加工模式的指定G142 自动脱模主轴加工模式的指定G143 自动脱模主轴和第3刀架加工模式的指定G144 W-轴控制OFF指令G145 W-轴控制ON指令G148 B-轴控制OFF指令G149 B-轴控制ON指令G152 可编程尾架定位(牵引尾架)G153 可编中心架G代码(牵引)G154 W-轴单向定位指令G155 精确轮廓描绘模式ON指令G156 精确轮廓描绘模式OFF指令G158 刀具轴方向刀具长度偏移量G159 刀具轴方向刀具长度偏移量(不带旋转位移偏移量) G160 取消刀具轴方向刀具长度偏移量G161 G代码宏功能MODING162 G代码宏功能MODING163 G代码宏功能MODING164 G代码宏功能MODING165 G代码宏功能MODING166 G代码宏功能MODING167 G代码宏功能MODING168 G代码宏功能MODING169 G代码宏功能MODING170 G代码宏功能MODING171 G代码宏功能CALLG178 同步攻丝循环(CW)G179 同步攻丝循环(CCW)G180 动力刀具复合固定循环: 取消G181 动力刀具复合固定循环: 钻孔G182 动力刀具复合固定循环: 镗孔G183 动力刀具复合固定循环: 深孔钻G184 动力刀具复合固定循环: 攻丝G185 动力刀具复合固定循环: 轴向螺纹车削G186 动力刀具复合固定循环: 端面螺纹车削G187 动力刀具复合固定循环: 轴向直螺纹车削G188 动力刀具复合固定循环: 经向直螺纹车削G189 动力刀具复合固定循环: 铰孔/镗孔G190 动力刀具复合固定循环: 键槽切削循环G191 动力刀具复合固定循环: 轴向键槽切削循环G205 G代码宏功能CALLG206 G代码宏功能CALLG207 G代码宏功能CALLG208 G代码宏功能CALLG209 G代码宏功能CALLG210 G代码宏功能CALLG211 G代码宏功能CALLG212 G代码宏功能CALLG213 G代码宏功能CALLG214 G代码宏功能CALLM代码内容M00 程序停止M01 任选停止M02 程序结束M03 工作主轴起动(正转)M04 工作主轴起动(反转)M05 主轴停止M06 刀具交换M08 冷却液开M09 冷却液关M10 主轴点动关M11 主轴点动开M12 动力刀具轴停止M13 动力刀具轴正转M14 动力刀具轴反转M15 C轴正向定位M16 C轴反向定位M17 机外测量数据通过RS232C传送请求M18 主轴定向取消M19 主轴定向M20 尾架干涉区或主轴干涉监视关(对面双主轴规格) M21 尾架干涉区或主轴干涉监视开(对面双主轴规格) M22 倒角关M23 倒角开M24 卡盘干涉区关,刀具干涉区关M25 卡盘干涉区开,刀具干涉区开M26 螺纹导程有效轴Z轴指定M27 螺纹导程有效轴X轴指定M28 刀具干涉检查功能关M29 刀具干涉检查功能开M30 程序结束M32 螺纹车削单面切削模式M33 螺纹车削时交叉切削模式M34 螺纹车削逆向单面切削模式M35 装料器夹持器Z向滑动后退M36 装料器夹持器Z向滑动前进M37 装料器臂后退M38 装料器臂前进到卸载位置M39 装料器臂前进到卡盘位置M40 主轴齿轮空档M41 主轴齿轮1档或底速线圈M42 主轴齿轮2档或高速线圈M43 主轴齿轮3档M44 主轴齿轮4档M48 主轴转速倍率无效取消M49 主轴转速倍率无效M50 附加吹气口1关M51 附加吹气口1开M54 分度卡盘自动分度M55 尾架后退M56 尾架前进M57 M63取消M58 卡盘底压M59 卡盘高压M60 M61取消M61 圆周速度恒定切削时,恒定旋转应答忽视M62 M64取消M63 主轴旋转M码应答忽视M64 主轴旋转之外的M码应答忽视M65 T码应答忽视M66 刀架回转位置自由M67 凸轮车削循环中同步运行模式取消M68 同步模式A运行开M69 同步模式B运行开M70 手动换到指令M72 ATC单元定位在接近位置M73 螺纹车削类型1M74 螺纹车削类型2M75 螺纹车削类型3M76 工件捕手后退M77 工件捕手前进M78 中心架松开M79 中心架夹紧M80 过切前进M81 过切后退M83 卡盘夹紧M84 卡盘松开M85 LAP粗车循环后不返回起始位置M86 刀架右回转指定M87 M86取消M88 吹气关M89 吹气开M90 关门M91 开门M92 棒料进给器后退M93 棒料进给器前进M94 装料器装料M95 装料器卸料M96 副轴用工件捕手后退M97 副轴用工件捕手前进M98 尾架低压M99 尾架高压M100 等待同步指令M101 外部M码M102 外部M码M103 外部M码M104 外部M码M105 外部M码M106 外部M码M107 外部M码M108 外部M码M109 取消M110M110 C轴连接M111 拾取轴自动零点设定M112 M-刀具轴在第三刀架上停止M113 M-刀具轴在第三刀架前进转M114 M-刀具轴在第三刀架向回转M115 卸料器打开M116 卸料器关闭M117 侧头前进M118 侧头后退M119 工件计数专用M120 无工件M121 固定中心架打开/关闭M122 固定中心架后退M123 固定中心架前进M124 STM超时检测开M125 STM超时检测关M126 附加送气口3关M127 附加送气口3开M128 尾架转动后退M129 尾架转动前进M130 卡盘故障检测空气关M131 卡盘故障检测送气输出关M132 卡盘故障检测关M133 卡盘故障检测开M134 负荷监视关M135 负荷监视开M136 复合固定循环形状指定M137 对刀器互锁解除开M138 对刀器互锁解除关M139 自学功能启动M140 攻丝循环动力刀具恒周速应答忽视M141 C轴夹紧指令选择M142 冷却液底压M143 冷却液高压M144 附加冷却液1关M145 附加冷却液1开M146 C轴松开M147 C轴夹紧M148 自动脱模主轴正转M149 自动脱模主轴反转M150 同步旋转关M151 同步旋转开M152 动力刀具轴互锁解除开M153 动力刀具轴互锁解除关M154 附加送气口2关(测量用吹气口) M155 附加送气口2开(测量用吹气口) M156 尾座互锁解除关M157 尾座互锁开M158 凸轮加工机-同步运行关M159 凸轮加工机-同步运行开M160 M161取消M161 进给倍率固定(100%)M162 M163取消M163 动力刀具主轴倍率固定(100%) M164 M165取消M165 进给保持和单程序段忽视M166 尾架进给/后退互锁解除关M167 尾架进给/后退互锁解除开M168 忽略动力刀具轴恒周速应答忽视M169 C轴没卡紧M172 车床内侧机械手互锁解除关M173 车床内侧机械手互锁解除开M174 附加冷却液2关M175 附加冷却液2开M176 Y轴松开M177 Y轴夹紧M178 尾架卡盘夹紧M179 尾架卡盘松开M180 机械手请求0M181 机械手请求1M182 机械手请求2M183 机械手请求3M184 卡盘互锁取消关M185 卡盘互锁取消开M188 尾架连接关(牵引可编程尾架规格)M189 尾架连接开(牵引可编程尾架规格)M190 尾架连接是可用G00移动M191 动力刀具主轴分度方向指定(顺时针)M192 动力刀具主轴分度方向指定(逆时针)M193 M194取消M194 螺纹车削相位核运行M195 M196取消M196 螺纹车削相位核对位移量有效M197 螺纹车削相位核对位移量清除M200 Z轴同步进给取消M201 Z轴同步进给G13M202 Z轴同步进给G14M203 刀架松开(数控刀架)M204 LR15M-ATC;循环时间缩短规格(刀库换刀门关)M205 LR15M-ATC;循环时间缩短规格(刀库换刀门开)M206 LR15M-ATC;循环时间缩短规格(后退位置防护罩开) M207 LR15M-ATC;循环时间缩短规格(后退位置防护罩关)M208 门互锁C,D开M209 门互锁C,D关M211 键槽切削循环:单向切削模式M212 M-刀具轴在第三刀架上停止或键槽切削循环:交叉切削模式M213 M-刀具轴在第三刀架上停止或键槽切削循环:进给量指定切削模式M214 M-刀具轴在第三刀架上停止或键槽切削循环:等分切削模式M215 负载监视G00忽略关M216 负载监视G00忽略开M218 附加吹气口关M219 附加吹气口开M220 平面车削关M221 平面车削旋转比(1:1)M222 平面车削旋转比(1:2)M223 平面车削旋转比(1:3)M224 平面车削旋转比(1:4)M225 平面车削旋转比(1:5)M226 平面车削旋转比(1:6)M227 LR15M-ATC;ATC操作完成等待指令M228 ATC下一个刀具返还指令M229 ATC动力刀具分度M230 外部M码M231 外部M码M232 外部M码M233 外部M码M234 外部M码M235 外部M码M236 外部M码M237 外部M码M238 平面车削动力主轴相位变更M239 副主轴模式主轴分度M240 动力刀具主轴:空档M241 动力刀具主轴:第1档M242 动力刀具主轴:第2档M243 排屑装置停止M244 排屑装置正转M246 副主轴卡盘互锁解除开M247 副主轴卡盘互锁解除关M248 副主轴卡盘夹紧M249 副主轴卡盘松开M250 工件推进器后退M251 工件推进器前进M252 激光尺数据写入M253 激光尺数据核对M254 程序停止M264 M265取消M265 脉冲手轮控制方式是取消快速进给M271 主轴低速开M272 主轴低速关M288 副主轴模式吹气关M289 副主轴模式吹气开M290 顶门关M291 顶门开M296 时间常数切换(用于少量切削标志) M297 时间常数切换(用于有效形状)。
最新⼴⼯计算机组成原理实验最新⼴⼯计算机组成原理实验姓名协作者___________ 教师评定实验题⽬基础汇编语⾔程序设计⼀、实验⽬的:(1)学习和了解TEC-XP+教学实验系统监控命令的⽤法;(2)学习和了解TEC-XP+教学实验系统的指令系统;(3)学习简单的TEC-XP+教学实验系统汇编语⾔程序。
⼆、实验设备与器材:TEC-XP+教学实验系统,仿真终端软件。
三、实验内容:1、学习联机使⽤TEC-XP+教学实验系统和仿真终端软件PCEC;2、学习使⽤WINDOWS界⾯的串⼝通讯软件;3、使⽤监控程序的R命令显⽰/修改寄存器内容、D命令显⽰存储器内容、E命令修改存储器内容;4、使⽤A命令编写⼀⼩段汇编程序,U命令反汇编刚输⼊的程序,⽤G命令连续运⾏改程序,⽤T、P命令单步运⾏并观察程序单步执⾏的情况。
四、实验步骤:⼀、实验具体操作步骤:1、准备⼀台串⼝⼯作良好的PC机;2、将TEC-XP放在实验台上,打开实验箱的盖⼦,确定电源处于断开状态;3、将⿊⾊电源线⼀端接220V交流电源,另⼀端插在TEC--XP试验箱电源插座上;4、取出通讯线,将通信线的9芯插头接在试验箱的串⼝“COM1”或“COM2”上,另⼀端接到PC机的串⼝上;5、将TEC-XP实验系统左下⽅的6个⿊⾊控制器开关置为001100,,控制开关的功能在开关上、下⽅有标识;开关拨向上⽅表⽰“1”,拨向下⽅表⽰“0”,“x”表⽰任意,其他实验相同;6、打开电源,船形开关和5v电源指⽰灯亮。
7、在PC机上运⾏PCEC16.EXE⽂件,直接回车。
8、按⼀下“RESET”按键,再按⼀下“START”按键在主机上显⽰:TEC—2000 CRT MONITORVersion 1.0 April 2001Computer Architectur Lab,Tsinghua UniversityProgrammed by He Jia>⼆、实验注意事项:⼏种常见的⼯作⽅式(开关拨到上⽅表⽰为1,拨到下⽅为0)三、仿真终端软件的操作成功运⾏PCEC16.EXE的界⾯四、实验⽰例:1.⽤R命令查看寄存器内容或修改寄存器的内容1)在命令⾏提⽰符状态下输⼊:R↙;显⽰寄存器的内容注:寄存器的内容在运⾏程序或执⾏命令后会发⽣变化。
计算机组成原理实验报告课程名称计算机组成原理实验学院计算机专业班级学号学生姓名指导教师张2017 年 6 月21计算机学院专业班学号姓名协作者教师评定_______________实验题目实验一基础汇编语言程序设计实验一:基础汇编语言程序设计实验1实验目的●学习和了解TEC-XP+教学实验监控命令的用法;●学习和了解TEC-XP+教学实验系统的指令系统;●学习简单的TEC-XP+教学实验系统汇编程序设计。
2实验设备及器材●工作良好的PC机;●TEC-XP+教学实验系统和仿真终端软件PCEC。
3实验说明和原理实验原理在于汇编语言能够直接控制底层硬件的状态,通过简单的汇编指令查看、显示、修改寄存器、存储器等硬件内容。
实验箱正如一集成的开发板,而我们正是通过基础的汇编语言对开发板进行使用和学习,过程中我们不仅需要运用汇编语言的知识,还需要结合数字逻辑中所学的关于存储器、触发器等基本器件的原理,通过串口通讯,实现程序的烧录,实验箱与PC端的通讯。
4实验内容1)学习联机使用TEC-XP+教学实验系统和仿真终端软件PCEC;2)学习使用WINDOWS界面的串口通讯软件;3)使用监控程序的R命令显示/修改寄存器内容、D命令显示存储内容、E命令修改存储内容;4)使用A命令写一小段汇编程序,U命令反汇编输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。
5实验步骤1)准备一台串口工作良好的PC机器;2)将TEC-XP+放在实验台上,打开实验箱的盖子,确定电源处于断开状态;3)将黑色的电源线一段接220V交流电源,另一端插在TEC-XP+实验箱的电源插座里;4)取出通讯线,将通讯线的9芯插头接在TEC-XP+实验箱上的串口"COM1"或"COM2"上,另一端接到PC机的串口上;5)将TEC-XP+实验系统左下方的六个黑色的控制机器运行状态的开关置于正确的位置,再找个实验中开关应置为001100(连续、内存读指令、组合逻辑、联机、16位、MACH),6)控制开关的功能在开关上、下方有标识;开关拨向上方表示"1",拨向下方表示"0","X"表示任意,其他实验相同;7)打开电源,船型开关盒5V电源指示灯亮;8)在PC机上运行PCEC16.EXE文件,根据连接的PC机的串口设置所用PC机的串口为"1"或"2",其他的设置一般不用改动,直接回车即可; (8)按一下"RESET"按键,再按一下"START"按键,主机上显示:6实验截图及思考题【例3】计算1到10的累加和。
实训1 排序程序设计六.参考代码DATA SEGMENTDW 0055H,0033H,0066H, 0077H,0099H, 0011H, 0022H, 0088H, 0044H, 0000HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV CX, 9LOOP1: MOV DX, CXMOV BX, 0LOOP2: MOV AX, [BX]INC BXINC BXCMP AX,[BX]JLE DONE ;小于或等于转移XCHG [BX], AXDEC BXDEC BXMOV [BX], AXINC BXINC BXDONE: DEC DXJNE LOOP2LOOP LOOP1MOV AX, 4C00HINT 21HCODE ENDSEND START实训二8259A外部中断六.参考代码CS273 equ 8000HICW1 euq 00010011b ; 单片8259, 上升沿触发中断, 写ICW4 ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应IR0CS8259A equ 0A000hCS8259B equ 0A001hdata segmentCNT db 0data endscode segmentasumme cs:code,ds:dtaienter proc nearpush axpush dxmov dx, CS273inc CNTmov al, CNTout dx, al ;输出计数值mov dx, CS8259Amov al, 20hout dx, alpop dxpop axiretienter endpiinit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretiinit endpstart proc nearclimov ax, 0mov ds, axmov bx, 4*ICW2mov ax, code ;mov ax, offset ienter;中断入口地址(段地址为0) mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ;代码段地址为0call iinitmov ax, datamov ds, axmov CNT, 0 ;计数初值为 0mov al, CNTmov dx, CS273out dx, alstiLP: nop ;等待中断jmp LPstart endpcode endsend start实训三8255输入/输出七.参考代码mode equ 082h ; 方式0,PA,PC输出,PB输入PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCAddr equ 8003h ; 控制字地址code segmentassume cs:codestart proc nearStart: mov al, modemov dx, CAddrout dx, al ; 输出控制字mov al, 80Hmov cx, 08HOutA: mov dx, PortAout dx, al ; 输出PortA mov dx, PortCout dx, alshr al, 1 ; 移位mov ah,100call delay ; 延时loop OutAdelay proc nearpush axmov al,0push cxmov cx,axloop $pop cxpop axretdelay endpcode endsenf start实训4 8251A串行通讯CS8251C equ 8001hdata segmentsource db 256 dup(055h)target db 256 dup(0aah)RBuf db 0TBuf db 0data endscode segmentassume cs:code,ds:dataIInit proc near ;8251初始化mov dx, CS8251Cmov al, 01001111b;1位停止位,无校验,8位数据,波特率因子64out dx, almov al, 00010101b;清除错标志,允许发送接收retIInit endpsend proc near ;串口发送mov dx, CS8251Cmov al, 00010101bout dx, alWaitTXD:in al, dxtest al, 1 ;发送缓冲器是否为空jz WaitTXDmov al, TBuf ;取要发送的字mov dx, CS8251Dout dx, al ;发送数据retsend endpreceive proc near ;串行接收mov dx, CS8251CWaitRXD:in al, dxtest al, 2 ;是否已收到一个字je WaitRXDmov dx, CS8251Din al, dx ;读取接收的字mov RBuf , alretreceive endstart proc nearmov ax, datamov es, axmov si, offset sourcemov di, offset targetmov cx, 256mov ds, axcall IInitMLoop:mov dx, CS8251Cin al, dx ;是否接收下一个字 test al, 2jne rcvdatacmp cx, 0je MLoopmov al, [si]inc simov Tbuf, alcall sandloop MLoopjimp MLooprcvdata:call receive ;读入接收的字mov al, RBufmov [di], alinc dijmp MLoopstart endpcode endsend实训5 8253计数器七.参考代码CONTROL equ 08003hCOUNT0 equ 08000hCOUNT1 equ 08001hCOUNT2 equ 08002hcode segmentassume cs:codetart proc nearmov al, 36h; 00110110B ; 计数器0,16位,方式3,二进制 mov dx, CONTROLout dx, almov ax, 10000mov dx, COUNT0out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, 76h; 01110110B ; 计数器1,16位,方式3,二进制 mov dx, CONTROLout dx, almov ax, 100mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节jmp $start endpcode endsend start实训6 交通灯控制六.参考代码app macro yy ;控制显示宏指令mov dx, 03c1hmov al, yyout dx, almov cx, 00d0hcall delayendmfres macro xx,yy ;控制闪烁宏指令app xxapp yyendmts macro xx ;控制测试宏指令mov dx, 03c0hin al, dxtest al, xxendmcode segmnet stack ‘stack’mag db ‘out of wok!’,0ah,0dh,24hassume ds:code,cs:code,es:code,ss:codestart: mov ax, csmov ds, axmov es, axmov ss, axmov al, 90hmov dx, 3c3hout dx, al ;置8255a方式字,使A口输入,B口输出call zjdncall fjdngo: app 0ch ;主干道通行mov cx, 40hb0: push cxcall zjdncall fjdnapp 0chpop cxloop b0mov cx, 00d0hcall delaycall czf ;从主干道通行变为支通行call zjdncall fjdncall czfapp 21h ;支路通行mov cx, 20hcall zjdnapp 21hpop cxloop b2call cfz ;从支路通行变为主干道通行call zjdncall fjdncall cfzmov ah, 01hint 16hzj againjnz exit ;有键盘输入,结束运行again: jmp goexit: mov ah, 09hmov dx, offset msgint 21hmov ah, 4dhint 21hzjdn proc near ;检测主干道特种车子程序,一旦有就放行push cxts 01bjz p1mov dx, 03c1hin al, dxtest al, 21hjz s1call cfzs1: app 0chmov cx, 0200hcall delayp1: pop cxretzjdn endpfjdn proc near ;检测支路特种车子程序,如有且主干道无才放行 push cxjz ffcall zjdnff: ts 02hjz p2mov dx, 03c1hin al, dxtest al, 0chjz s2call czfs2: app 21hmov cx, 0200hcall delayp2: pop cxretfjdn endpdelay proc ;延时子程序d2: mov ax, 0100hdela: dec axjnz delaloop d2retdelay endpcfz proc nearpush cxmov bx, 03hw3: fres 11h,10hdec bxjnz w3pop cxretcfz endpczf proc near ;从主干道通行变为支路通行 push cxmov bx, 03hw1: fres oah, 02hdec bxjnz w1pop cxretczf endpdb 200dup(?) end start。
计算机学院计算机科学与技术专业5班学号3110006054姓名谭威协作者______________ 教师评定________________实验题目单片机I/O口—流水灯实验一.实验目的:1.学习单片机各I/O口的结构特点及相关寄存器的使用方法。
2.掌握一个简单的具体的单片机项目的开发流程。
3.了解Proteus ISIS 软件及实用方法。
4.熟悉Proteus ISIS 与uVision2 IDE 的开发环境的互连调试。
二.实验内容:1.打开ISISProfessional,参照“实验电路”绘制仿真电路的原理图。
2.编程实现:(1)从VD1~VD32逐次点亮每个LED,然后熄灭。
每个LED亮灯时间约为200ms。
(2)点亮VD32,200ms后再点亮VD31····最后点亮VD1,直到全部灯被点亮。
(3)在全部灯亮的情况下,从VD1~VD32逐次熄灭LED,熄灭VD1,延时200ms;然后熄灭VD2,延时200ms····熄灭VD32,全部灯被熄灭。
(4)重复上述过程。
三.实验电路:四.实验源程序:#include <REG52.H>//片内寄存器定义#define uchar unsigned char#define uint unsigned intuchar code fun[]={0xfe,0x7f,0x01}; void delay()//延时函数{uchar i,j;for (i=0;i<250;i++)for (j=0;j<250;j++);}void fun1()//逐个点亮、熄灭{uchar j,i=0;uchar temp;temp=fun[i];for (j=0;j<8;j++){P0=temp;temp=temp<<1 ;temp|=0x01;delay();}P0=0xff;temp=fun[i];for (j=0;j<8;j++){P1=temp;temp=temp<<1 ;temp|=0x01;delay();}P1=0xff;temp=fun[i];for (j=0;j<8;j++){P2=temp;temp=temp<<1 ;temp|=0x01;delay();}P2=0xff;temp=fun[i];for (j=0;j<8;j++){P3=temp;temp=temp<<1 ;temp|=0x01;delay();}P3=0xff;}void fun2()//逐个点亮,最后全部点亮{uchar j,i=1;uchar temp;temp=fun[i];for (j=0;j<8;j++){P3=temp;temp=temp>>1 ;delay();}temp=fun[i];for (j=0;j<8;j++){P2=temp;temp=temp>>1 ;delay();}temp=fun[i];for (j=0;j<8;j++){P1=temp;temp=temp>>1 ;delay();}temp=fun[i];for (j=0;j<8;j++){P0=temp;temp=temp>>1 ;delay();}}void fun3()//逐次熄灭{uchar j,i=2;uchar temp;temp=0x00;P0=temp;P1=temp;P2=temp;P3=temp;temp=fun[i];for (j=0;j<8;j++){P0=temp;temp=temp<<1 ;temp|=0x01;delay();}P0=0xff;temp=fun[i];for (j=0;j<8;j++){P1=temp;temp=temp<<1 ;temp|=0x01;delay();}P1=0xff;temp=fun[i];for (j=0;j<8;j++){P2=temp;temp=temp<<1 ;temp|=0x01;delay();}P2=0xff;temp=fun[i];for (j=0;j<8;j++){P3=temp;temp=temp<<1 ;temp|=0x01;delay();}P3=0xff;}void main()//主函数{while (1){fun1();fun2();fun3();}}计算机学院计算机科学与技术专业 5 班学号3110006054姓名谭威协作者______________ 教师评定______________实验题目定时器实验一.实验目的:1.学习80c51单片机的定时器的使用和编程。
实验一DEBUG命令的使用及汇编语言源程序的调试步骤1. DEBUG命令的使用一、实验目的1.练习简单的DOS命令(DIR, CD,MD ,CLS)2.学习使用DEBUG程序的常用命令。
(R,D,E, A,U,T, G,Q)3.了解8086内存地址空间分配二、预备知识1.DOS常用命令练习在Windows 98、Windows2000、Windows XP 中启动DOS,单击“开始”菜单中的“运行”命令,打开“运行”对话框,在文本框中输入“command”后,单击“确定”按钮。
进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter 键将窗口变换为全屏幕方式。
(1)要更换当前目录到硬盘的其它分区,应该输入盘符然后回车。
比如要到D盘,那么就输入D:。
(2)cd命令,改变缺省目录或显示当前目录。
(3)dir 命令,查看电脑中的文件。
其中凡后缀为exe 、com 或bat 的文件都是可以直接执行的。
这些以exe 为后缀的文件叫可执行文件;以com 为后缀的文件叫命令文件;以bat 为后缀的文件叫批处理文件。
如果我们要执行这些文件,只需在提示符下敲入文件基本名然后回车即可,不需输入文件后缀。
(4) del 命令,删除文件。
要删除当前目录中的某个文件,输入del 空格再加上文件名就可以了。
如:要删除当前目录中的a.asm 文件。
(5)copy 命令,复制文件。
复制就是原来的文件并没有任何改变,重新产生了一个内容和原来文件没有任何差别的文件。
copy 命令的格式: copy 源文件名 目的文件名 无论源文件还是目的文件○1 如果不指明驱动器名,即为当前驱动器; ○2 如果不指明目录,即为当前目录; ○3 如果不指明文件名,则为相同文件名。
回到根目录2.掌握DEBUG程序的常用命令。
DEBUG是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
实验三分支、循环及子程序设计实验一、实验目的1)了解分支、循环、子程序等程序的基本结构2)掌握分支程序、循环结构程序的设计和调试方法3)掌握子程序的定义和调试方法二、实验内容数据块的传送题目:设计一数据块的搬移程序。
使用数据串操作指令实现程序运行结果:0208:0200 00 01 02 03 04 05 06 070208:0208 08 09 10 11 12 13 14 15三、编程练习题目:设数据段SCORE单元开始连续存放着20个学生的成绩,编写程序统计<60,60~69,70~79,80~89,>90分数段的人数,并把统计结果存放到从TOT开始的数据块中。
(数据64H,41H,5DH,55H,52H,51H,44H,45H,47H,48H,4DH,4FH,3CH,3FH,40H,41H,33H,56H, 59H,30H)程序清单:STACK SEGMENT STACK ;堆栈段DW 128 DUP(?) ;注意这里只有128个字节STACK ENDSDATA SEGMENT ;数据段;定义数据段ORG 1000HSCORE DB 64H,61H,5DH,55H,52H,51H,44H,45H,47H,48HDB 4DH,4FH,3CH,3FH,40H,41H,33H,56H,59H,30HORG 1030HTOT DB 5 DUP(?)DATA ENDSCODE SEGMENT ;代码段ASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;初始化MOV DS, AX;代码MOV CX, 20 ;学生个数MOV SI, 0 ;SI指向学生成绩MOV DI, 0 ;DI指向统计结果AA: MOV AL, SCORE[SI] ;取一个成绩CMP AL, 90JC N1 ;若不大于90分,则跳转到N1INC TOT [DI] ;若大于90分, 90分人数加1JMP LASTN1: CMP AL, 80JC N2 ;若不大于80分,则跳转到N2INC TOT[DI+1] ;若大于80分, 80分人数加1JMP LASTN2: CMP AL, 70JC N3 ;若不大于70分,则跳转到N3INC TOT[DI+2] ;若大于70分, 70分人数加1JMP LASTN3: CMP AL,60JC N4 ;若不大于60分,则跳转到N4INC TOT[DI+3] ;若大于60分, 60分人数加1JMP LASTN4: INC TOT[DI+4] ; 60分以下人数加1LAST: INC SILOOP AA ;循环,直到所有成绩都统计完MOV AX,4C00H ;退出程序INT 21HCODE ENDSEND START运行结果:0208:1030:03 05 04 06 02程序流程图如下:四、实验心得通过本次实验,了解了分支、循环、子程序等程序的基本结果,通过编程练习,我掌握了分支程序和循环程序的设计和调试方法。
实验1 编程练习1STACK SEGMENT STACKDW 64 DUP (?)STACK ENDSDATA SEGMENTORG 0500HDATA1 DB 5 DUP (?)ORG 050AHDATA2 DB 5 DUP (?)DATA ENDSCODE SEGMENTASSUME CS : CODE, DS : DATA START : MOV AX, DATAMOV DS, AXLEA SI, DATA1LEA DI, DATA2MOV CX, 05HA : MOV AL, [SI]CMP AL, 30HJB BCMP AL, 39HJA BSUB AL, 30HMOV [DI], ALJMP CB: MOV [DI], 0FFHC: INC SIINC DILOOP AMOV AH, 4CHINT 21HCODE ENDSEND START实验二编程练习2STACK SEGMENT STACKDW 64 DUP (?)STACK ENDSDATA SEGMENTORG 0500HDATA1 DB 6 DUP (?)ORG 0510HDATA2 DB ?DATA ENDSCODE SEGMENTASSUME CS : CODE, DS : DATASTART : MOV AX, DATAMOV DS, AXMOV SI, OFFSET DATA1MOV DI,OFFSET DATA2MOV CX, 06HMOV AX, 0HCYCLE: ADD AL, [SI]ADC AH, 0INC SILOOP CYCLEMOV BL, 06HDIV BLMOV BL, 0AHDIV BLMOV CL, 4SHL AL, CLADD AL, AHMOV [DI], ALMOV AH, 4CHINT 21HCODE ENDSEND START实验三编程练习1DATAS SEGMENTORG 0500HDATA1 DB 09H,12H,80H,78H,0C8H,00H,00H,0FEH,99H,34H ORG 0510HDATA2 DB 3 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXXOR AX,AXXOR BX,BXMOV SI,OFFSET DATA1XOR CX,CXMOV CL,[SI]HAHA:MOV BH,[SI]CMP BH,00HJZ LINGJS FUSHUINC BLJMP CCCLING:INC AHJMP CCCFUSHU:INC ALJMP CCCCCC: INC SILOOP HAHAMOV DI,OFFSET DATA2MOV [DI],BLINC DIMOV [DI],ALINC DIMOV [DI],AHMOV AH,4CHINT 21HCODES ENDS实验四编程练习4DATAS SEGMENTDATA1 DB 'Input two numbers A&B:$'DATA2 DB ' $'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DX,OFFSET DATA1MOV AH,09HINT 21HMOV CL,0FFHAA: MOV DX,OFFSET DATA2 MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,0DHJZ DONEMOV BH,ALSUB BH,30HMOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,0DHJZ DONEMOV AH,09HINT 21HSUB AL,30HADD AL,BHXOR AH,AHMOV BL,0AHDIV BLADD AL,30HMOV DL,ALMOV BH,AHMOV AH,02HINT 21HADD BH,30HMOV DL,BHMOV AH,02HINT 21HLOOP AADONE:MOV AH,4CHINT 21HCODES ENDSEND START实验五编程练习1 STACK SEGMENT STACKDW 32 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE START:PUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET MIRQ6MOV SI,0038HMOV [SI],AXMOV AX,CSMOV SI,003AHMOV [SI],AXMOV AX,OFFSET SIRQ1MOV SI,00C4HMOV [SI],AXMOV AX,CSMOV SI,00C6HMOV [SI],AXCLIPOP DS;初始化主片MOV AL,11H OUT 20H,AL MOV AL,08H OUT 21H,AL MOV AL,04H OUT 21H,AL MOV AL,01H OUT 21H,AL ;初始化从片MOV AL,11H OUT 0A0H,AL MOV AL,30H OUT 0A1H,AL MOV AL,02H OUT 0A1H,AL MOV AL,01H OUT 0A1H,AL MOV AL,0FDH OUT 0A1H,AL IN AL,21H AND AL,7FH OUT 21H,ALSTIAA1:NOPJMP AA1MIRQ6:CALL DELAYMOV AX,0136HINT 10HMOV AX,0147HINT 10HMOV AX,014FHINT 10HMOV AX,014FHINT 10HMOV AX,0144HINT 10HMOV AX,0120HINT 10HMOV AL,20HOUT 20H,ALIRETSIRQ1:CALL DELAYMOV AX,0133HINT 10HMOV AX,0153HINT 10HMOV AX,0120HINT 10HMOV AL,20HOUT 0A0H,ALOUT 20H,ALIRETDELAY:PUSH CXMOV CX,1E00H AA0: NOPLOOP AA0POP CXRETCODE ENDSEND START实验六编程练习1STACK SEGMENT STACKDW 32 DUP(?) STACK ENDSDATA SEGMENTV A1....DB…..3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH ,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,606HMOV AL,80HOUT DX,ALA1:LEA SI,V A1MOV CX,0010HA2:MOV DX,0602HMOV AL,[SI]OUT DX,ALCALL DALLYINC SILOOP A2JMP A1DALLY:PUSH CXMOV CX,0050HA3:MOV AX,0FFFHA4:DEC AXJNZ A4LOOP A3POP CXRETCODE ENDSEND START实验1编程练习2data segmentorg 0500hdate1 dw 4fffhorg 0510hdate2 db 20 dup(?)data endscode segmentassume cs:code,ds:data main: mov ax,datamov ds,axlea si,date1lea di,date2mov ax,[si]mov dx,0000hmov bx,000ahmov cx,5next: mov [di],word ptr 30hinc diloop nextmov cx,5done: dec didiv bxadd [di],dlmov dx,0000hloop donemov ah,4chint 21hcode endsend main实验2编程练习3data segmentorg 0500hdate1 db 10h,15h,0fhorg 0510hdate2 db 20 dup(?)data endscode segmentassume cs:code,ds:data main: mov ax,datamov ds,axlea si,date1lea di,date2mov al,[si]add al,[si+1]add al,[si+2]mov bl,04hmul blmov bl,0ahmov ah,00hmov cx,3done: div blmov dl,ahadd dl,30hmov [di],dlmov ah,00hinc diloop donemov ah,4chint 21hcode endsend main实验三编程练习2data segmentorg 0200hdat0 db 'aba'(这里输入的数是先放进存好,再编程的)org 0204hdate0 dw ?data endscode segmentassume cs:code,ds:datamain: mov ax,datamov ds,axmov si,offset dat0mov di,offset dat0+1mov al,[si]xor al,[di]jnz onelea di,dat0+2mov al,[si]xor al,[di]jnz two;20mov date0,0ffffhjmp stoptwo: mov date0,dijmp stopone: lea di,dat0+2mov al,[si]xor al,[di]jnz thrlea si,dat0+1mov date0,sijmp stopthr: mov date0,sijmp stopstop: mov ah,4chint 21hcode endsend main实验四编程练习2data segmentorg 0120hdate2 db 'Input data A:$'org 0140hdate3 db 'Input data B:$'org 0160hdate1 db 41h,00h,42h,24h data endscode segmentassume cs:code,ds:data main: mov ax,datamov ds,axa4: mov dx,offset date2mov ah,09hint 21hmov ah,01hint 21hmov ch,almov bl,alxor bl,0dhjz a5mov ah,01hint 21hmov cl,almov bl,alxor bl,0dhjz a5mov dl,0ahmov ah,02hint 21hmov dx,offset date3mov ah,09hint 21hmov ah,01hint 21hmov dh,almov bl,alxor bl,0dhjz a5mov ah,01hint 21hmov dl,almov bl,alxor bl,0dhjz a5mov bh,dlmov dl,0ahmov ah,02hint 21hmov dl,bhcmp cx,dxja a1jb a2mov date1+1,3dhjmp a3a2: mov date1+1,3chjmp a3a1: mov date1+1,3eha3: mov dx,offset date1mov ah,09hint 21hmov dl,0ahmov ah,02hint 21hjmp a4a5: mov ah,4chint 21hcode endsend main实验五编程练习5DA TA SEGMENTSHU DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,20H,00H DA TA ENDSCODE: SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET MIRQ6MOV SI,0038HMOV [SI],AXMOV AX,CSMOV SI,003AHMOV [SI],AXMOV AX,OFFSET SIRQ1MOV SI,00C4HMOV [SI],AXMOV AX,CSMOV SI,00C6HMOV [SI],AXCLIPOP DSMOV AL,11HOUT 20H,ALMOV AL,08HOUT 21H,ALMOV AL,04HOUT 21H,ALMOV AL,01HOUT 21H,ALMOV AL,11HOUT 0A0H,ALMOV AL,30HOUT 0A1H,ALMOV AL,02HOUT 0A1H,ALMOV AL,01HOUT 0A1H,ALMOV AL,0FDHOUT 0A1H,ALIN AL,21HAND AL,0BBHOUT 21H,ALSTIAA1: NOPJMP AA1MIRQ6: CALL DELAYMOV AH,06HMOV BX,OFFSET SHUINT 10HMOV AL,20HOUT 20H,ALIRETSIRQ1: CALL DELAYMOV AX,014FHINT 10HMOV AX,014BHINT 10HMOV AX,0120HINT 10HMOV AL,20HOUT 0A0H,ALOUT 20H,ALIRETDELAY: PUSH CXMOV CX,1E00HAA0: NOPLOOP AA0POP CXRETCODE ENDSEND START实验六编程练习3STACK SEGMENT STACKDW 32 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 77H,7FH,39H,3FH,79H,71H,06H,5BH,4FH,66H,6DH,7DH DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DX,0686HMOV AL,80HOUT DX,ALA1: LEA SI,VA1MOV CX,000CHA2: MOV DX,0682HMOV AL,[SI]OUT DX,ALCALL DALL YINC SILOOP A2JMP A1DALL Y: PUSH CXMOV CX,0050HA3: MOV AX,0FFFHA4: DEC AXJNZ A4LOOP A3POP CXRETCODE ENDSEND START实验1,编程3DA TA SEGMENTORG 0500HDA TA1 DW 1 DUP(?)ORG 050AHDA TA2 DB 4 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA START: MOV AX,DA TAMOV DS,AXLEA SI,DATA1LEA DI,DA TA2MOV AL,[SI+1]MOV CL,4AND AL,0F0HSHR AL,CLCMP AL,09HJA A1ADD AL,30HMOV [DI],ALJMP A2A1: ADD AL ,37HMOV [DI],ALA2: MOV AL,[SI+1]AND AL,0FHCMP AL,09HJA A3ADD AL,30HMOV [DI+1],ALJMP A4A3: ADD AL,37HMOV [DI+1],ALA4: MOV AH,[SI]AND AH,0F0HSHR AH,CLCMP AH,09HJA A5ADD AH,30HMOV [DI+2],AHJMP A6A5: ADD AH,37HMOV [DI+2],AH A6: MOV AH,[SI]AND AH,0FHCMP AH,09HJA A7ADD AH,30HMOV [DI+3],AHJMP DONEA7: ADD AH,37HMOV [DI+3],AH DONE: MOV AH,4CHINT 21HCODE ENDSEND START实验2 编程1STACK SEGMENT STACK DW 64 DUP(?) STACK ENDSDA TA SEGMENTORG 0700HX DW ?Y DW ?Z DW ?ORG 0710HQ DW ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXLEA SI,XLEA DI,QMOV AL,[SI]ADD AL,[SI+2]AAAMOV [DI],ALMOV AH,00HMOV AL,[SI+1]ADC AL,[SI+3]AAAMOV [DI+1],ALMOV AL,[DI]SUB AL,[SI+4]AASMOV [DI],ALMOV AH,00HMOV AL,[DI+1]SBB AL,[SI+5]AASMOV [DI+1],ALMOV AL,4CHINT 21HCODE ENDSEND START实验三编程3STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTSCORE DB 20 DUP(?)TOT DB 5 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DA TAMOV DS,AXMOV SI,OFFSET SCOREMOV DI,OFFSET TOTMOV CX,20XOR AX,AXXOR BX,BXXOR DX,DXA1: MOV DH,3AHCMP DH,[SI]JB A2INC ALJMP DONEA2: MOV DH,45HCMP DH,[SI]JB A3INC AHJMP DONEA3: MOV DH,4FHCMP DH,[SI]JB A4INC BLJMP DONEA4: MOV DH,59HCMP DH,[SI]JB A5INC BHJMP DONEA5: INC DLDONE: INC SILOOP A1MOV [DI],ALMOV [DI+1],AHMOV [DI+2],BLMOV [DI+3],BHMOV [DI+4],DLMOV AH,4CHINT 21HCODE ENDSEND START实验四编程3STACK SEGMENTDW 64 DUP(?)STACK ENDSDA TA SEGMENTNUM DB 66HDB 88B //定义组内容BUFF1 DB 'Input a binary number: $'BUFF2 DB 'Found$'BUFF3 DB 'No Found$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV SI,OFFSET NUMMOV DX,OFFSET BUFF1MOV AH,09HINT 21HA3: XOR BL,BLMOV CX,7 //能够无限循环的重点A2: MOV AH,01HINT 21HCMP AL,0DHJZ DONESUB AL,30HSHL AL,CLADD BL,ALLOOP A2 //将键入的0或1在编程里转化为二进制(CX取7而不是8是为了方便左移)MOV AH,01HINT 21HCMP AL,0DHJZ DONESUB AL,30HADD BL,AL //在循环外面把最后一位加上就可以得到一个8位的二进制数了CMP BL,[SI]JZ A1CMP BL,[SI+1]JZ A1MOV DX,OFFSET BUFF3MOV AH,09HINT 21HJMP A3A1: MOV DX,OFFSET BUFF2MOV AH,09HINT 21HJMP A3 //判断键入的数是否在内存的组里DONE: MOV AH,4CHINT 21HCODE ENDS实验5编程3STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE START: MOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,CSMOV SI,003EHMOV [SI],AXMOV AL,11HOUT 20H,ALMOV AL,08HOUT 21H,ALMOV AL,04HOUT 21H,ALMOV AL,01HOUT 21H,ALIN 21H,ALAND AL,3FHOUT 21H,ALSTIMOV CX,0002HA1: CMP CX,0000HJNZ A2IN AL,21OR AL,80HOUT 21H,ALA2: NOPJMP A1IRQ7: STIMOV AX,0137HINT 10HMOV BX,0140HA3: INC BXMOV AX,BXINT 10HCMP BX,015AHJNZ A4INT 10HDEC CXMOV AL,20HOUT 20H,ALIRETCODE ENDSEND START实验6编程2STACK SEGMENT STACKDW 32 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK START: MOV DX,0606HMOV AL,90HOUT DX,ALA1: MOV DX,0602HOUT AL,DXTEST AL,20HJZ A2MOV DX,0600HMOV AL,0FFHJMP A1A2: TEST AL,40HJZ A3MOV DX,0600HMOV CX,0008HMOV BX,0FFFFHMOV AL,01HZ: OUT DX,ALSHL AL,1B: DEC BXJNZ BTEST AL,40HJZ A1LOOP ZJMP A1A3: MOV DX,0600HMOV AL,00HOUT DX,ALJMP A1CODE ENDSEND START1.4STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTORG 0500HDATA1 DW 0102H,0304H,0506H,0708H ORG 0510HDATA2 DB 4 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV SI,OFFSET DATA1MOV DI,OFFSET DATA2MOV CX,04HA1: MOV BL,0AHMOV AL,[SI]MUL BLADD AL,[SI+01H]MOV [DI],ALADD SI,02HINC DILOOP A1MOV AH,4CHINT 21HCODE ENDSEND STARTSTACK SEGMENT STACKDW 64 DUP(?)STACK ENDS2.5DATA SEGMENTORG 0300HXL DB 08HXH DB 06HYL DB 09HYH DB 05HZL DB 06HZH DB 03HORG 0310HDATA1 DW 2DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV DI,OFFSET DATA1MOV AL,XLSUB AL,YLAASMOV BL,ALMOV AL,XHSBB AL,YHAASMOV BH,ALMOV AL,ZLADD AL,BLAAAMOV BL,ALMOV AL,ZHADC AL,BHAAAMOV BH,ALMOV [DI],BXMOV AH,4CHINT 21HCODE ENDSEND START3.4STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTORG 0300HLEN DW ?ORG 0302HDAT DB 100 DUP(?)ORG 0400HMAX DB ?ORG 0401HADS DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXLEA SI,LENLEA DI,ADSMOV CX,WORD PTR [SI]MOV AL,00HADD SI,02HA2: CMP AL,[SI]JAE A1MOV AL,[SI]LEA WORD PTR [DI],SIA1: INC SILOOP A2DEC DIMOV [DI],ALMOV AH,4CHINT 21HCODE ENDSEND START4.4 STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTVA1 DB 0AH,0DH,’Input a data:$’VA2 DB 0AH,0DH,’The result is:$’BUFF1 DB 3FHDB ?DB 3FH DUP(?)BUFF2 DB 3FH DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET VA1MOV AH,09HINT 21HLEA DX,BUFF1MOV AH,0AHINT 21HLEA DI,BUFF1ADD DI,02HLEA SI,BUFF2MOV CX,02HA3: MOV AL,[DI]CMP AL,39HJBE A1SUB AL,37HJMP A2A1: SUB AL,30HA2: MOV [DI],ALINC DILOOP A3DEC DIMOV AL,[DI-1]MOV CL,04HSHL AL,CLADD AL,[DI]MOV AH,00HMOV CX,00HMOV BL,0AHA4: DIV BLADD AH,30HMOV [SI],AHINC SIADD CL,01HMOV AH,00HCMP AL,00HJNZ A4MOV DX,OFFSET VA2MOV AH,09HINT 21HA5: DEC SIMOV DL,[SI]MOV AH,02HINT 21HLOOP A5MOV AH,01HINT 21HCMP AL,0DHJNZ STARTMOV AH,4CHINT 21HCODE ENDSEND START5.6STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ6MOV SI,0038HMOV [SI],AXMOV AX,CSMOV SI,003AHMOV [SI],AXPOP DSMOV AL,11HOUT 20H,ALMOV AL,08HOUT 21H,ALMOV AL,04HOUT 21H,ALMOV AL,01HOUT 21H,ALIN AL,21HAND AL,0BFHOUT 21H,ALSTIA1:MOV CX,001AHMOV BL,41HMOV AH,01HA2:MOV AL,BLINT 10HINC BLPUSH CXMOV CX,0FFFFHA3:LOOP A3POP CXDEC CXJNZ A2JMP A1IRQ6:CALL DALLYMOV AL,47HMOV AH,01HINT 10HMOV AL,4FHMOV AH,01HINT 10HMOV AL,4FHMOV AH,01HINT 10HMOV AL,44HMOV AH,01HINT 10HPUSH CXMOV CX,0FFFFHA4:LOOP A4POP CXMOV AL,20HOUT 20H,ALIRETDALLY:PUSH CXMOV CX,0F00HCODE ENDSEND START6.4 STACK SEGMENT STACKDW 32 DUP(?)STACK ENDSDATA SEGMENTLED DB 80H,40H,20H,10H,08H,04H,02H,01H DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV DX,0606HMOV AL,82HOUT DX,ALA1:MOV DX,0602HIN AL,DXCMP AL,04HJZ A2CMP AL,04HJZ A2CMP AL,08HJZ A3MOV DX,0600H MOV AL,0FHOUT DX,ALJMP A1A2:MOV DX,0600H MOV AL,0F0HOUT DX,ALJMP A1A3:MOV CX,08H LEA SI,LEDA4:MOV AL,[SI] MOV DX,0600HOUT DX,ALCALL DALLYINC SIMOV DX,0602HIN AL,DXCM AL,08HJNZ A1LOOP A4JMP A3DALLY:PUSH CX PUSH AXMOV CX,0500HAA3:MOV AX,0FFFH AA4:DEC AXJNZ AA4LOOP AA3POP AXPOP CXRETCODE ENDSEND START。