微机原理与接口技术

微机原理与接口技术——十六进制数转十进制

痴心易碎 提交于 2019-12-23 21:56:53
实验内容: 将键盘输入的十六进制数转换为十进制输出。 实验原理 首先利用dos功能调用,读取输入的两位十六进制的第一位数字,首先判断输入的字符是否在0-9、a-f、A-F之间,如果不在则程序直接退出,如果在则将大写字母减37h,小写字母减57h,数字减30h,然后乘以十六后以二进制的形式暂存在bl当中,同理输入第二位数字,与bl相加,然后判断bl是否大于99,如果大于99,则先除以100将百位数显示出来,同理显示十位和个位数字,如果小于99,则直接除以10显示十位数,然后显示个位数字。 代码附录如下: code segment assume cs : code start : push ds sub ax , ax push ax mov bx , 0 mov dx , 0 mov cx , 10 ; 初始化 , 设置循环次数为 10 次 xunhuan : mov ah , 1 int 21 h ; 读入第一位 cmp al , '0' jb aa cmp al , '9' ja dayu91 sub al , '0' ; 减去 30 H jmp zhixing dayu91 : cmp al , 'A' jb aa cmp al , 'F' ja dayuF1 sub al , 37 h ; 减去 60 H jmp zhixing dayuF1 : cmp al , 'a'

微机原理与接口技术——简易八人抢答器设计

寵の児 提交于 2019-12-22 01:39:54
八人抢答器利用8255来实现,A口接数码管输出,B口接输入,代码如下: **`;========================================================= ; 文件名: A82551.ASM ; 功能描述: B口为输入,A口为输出,实现八人抢答器 ; IOY0 ;========================================================= IOY0 EQU 0600 H ; 片选IOY0对应的端口始地址 MY8255_A EQU IOY0 + 00 H * 2 ; 8255 的A口地址 MY8255_B EQU IOY0 + 01 H * 2 ; 8255 的B口地址 MY8255_C EQU IOY0 + 02 H * 2 ; 8255 的C口地址 MY8255_MODE EQU IOY0 + 03 H * 2 ; 8255 的控制寄存器地址 SSTACK SEGMENT STACK DW 32 DUP ( ? ) SSTACK ENDS CODE SEGMENT ASSUME CS : CODE START : MOV DX , MY8255_MODE MOV AL , 82 H OUT DX , AL ; 初始化 8255 MOV DX , MY8255_C MOV AL , 00 H OUT DX

微机原理与接口技术笔记(二)

佐手、 提交于 2019-12-02 19:42:25
目录 转移类指令 循环控制指令 过程调用指令 中断控制指令 处理器控制指令 汇编语言源程序 过程 语句类型 伪指令 数据定义伪指令 符号定义伪指令 段定义伪指令 设定段寄存器伪指令 结束伪指令 过程定义伪指令 宏定义伪指令 调整偏移量伪指令 系统功能调用 单字符输入 字符串输入 单字符输出 字符串输出 返回操作系统功能 上一篇笔记: https://www.cnblogs.com/Tony100K/p/11653755.html 转移类指令 JMP Label 段内直接转移 MOV BX,1200H JMP BX执行完之后 IP=1200H了 MOV BX,1200 JMP WORD PTR[BX]段内间接转移,1200和1201这两个单元送给了IP 段间转移也是32位 JMP FAR Label 间接转移 JMP DWORD PTR[BX] DWORD指32位 低地址送IP,高地址送CS 条件转移范围只有 -128到127 ​ 统计内存数据段中以TABLE为首地址的100个8位带符号数中的正数\负数和零的个数 START: XOR AL,AL MOV PLUS,AL MOV MINUS,AL MOV ZERO,AL LEA SI,TABLE MOV CX,100 CHECK: LODSB OR AL,AL JS X1 JS X2 INC PLUS JMP NEXT X1: INC