微机原理与汇编语言

2024-11-28 13:53:56
推荐回答(5个)
回答1:

JMP START 就是一个死循环呗,跳转到START那句,为的是可以多次读取开关的状态。你要是想让这个程序执行一次就退出当然也可以跳转到别的地方, 但是你没有定义STOP, 就没办法JMP了.
我估计你是不是把START这个标号理解成别的什么东西了,在这里START就是个标号,代表那句“MOV DX,01F2H”的地址,没有什么别的意思, 并不是你所理解的"程序开始".
程序写的肯定不对,问题很大,没有原题没法改,最起码你第一次IN之后得把AL保存一下吧,或者每次TEST AL之前重新IN一下,要不AL都让你给改了,你TEST它有什么用啊?
之所以说没有原题没法改是因为如下原因:
一 不知道开关Ki闭合对应的是0还是1, 你的程序把我搞糊涂了.
二 不知道你所谓的"其他情况,不做任何处理" 是 真的什么都不做 还是 让二极管全都不发光
三 假设开关闭合为1, 那如果开关状态是11111010的话, 我是应该让高四位的二极管发光呢还是什么都不做呢? 按照我对题目的理解好像应该是让高四位发光, 如果这样的话, 楼上 zsq0325 同学的程序就有问题了, 用CMP是不行的.

回答2:

不知道你是问微机(cpu)与汇编语言的关系还是微机原理这门课程跟汇编语言的关系。
前者:cpu是靠执行二进制机器代码来工作的,也就是控制微机可以考000000这样的二进制代码,但是考虑到这样的指令代码难以记住,程序可读性很差,不是专业人才基本不用掌握这种,于是又有了汇编,汇编是一种高级语言,但是对于其他高级来说是低级语言,它其实是与二进制指令相映射的,而汇编标识符易于记忆,程序可读性好,而且学会汇编编程,能够很好掌握CPU内部结构等,但是不同的CPU有不同的指令。
后者:微机原理是一门课程,一般就讲数制基础知识,CPU硬件结构,对应汇编语言,汇编程序编程结构,还有存储器啊,I/O,外围芯片等,所以,汇编语言其实只是微机原理这么课程的一部分,它是人与CPU沟通的媒介,学会汇编语言或者其他高级语言才能操作CPU吧
不知道满意否,你可以自己组织一下下,呵呵

回答3:

《微机原理》是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。要求考生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力。

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。[1]
许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

回答4:

STRAT是标签啊 所以可以jmp 没有STOP这个标签 所以你编译的时候不会通过的

jmp START 这是又跳转的首部了 这个就是无限循环了

回答5:

用74LS244作为输入接口(端口地址:01F2H)连接8个开关K0~K7,

用74LS273作为输出接口(端口地址:01F3H)连接8个发光二极管。

编写程序实现下述功能的程序段:

(1) 若8个开关K7~K0全部闭合,则使8个发光二极管亮;

(2) 若开关高4位(K7~K4)全部闭合,则使连接到74LS273高4位的发光量亮;

(3) 若开关低4位(K7~K4)闭合,则使连接到74LS273低4位的发光量亮;

(4) 其他情况,不做任何处理。

--------------------------------
程序如下:

START: 

  MOV DX, 01F2H

  IN AL, DX   ;读入开关状态

  MOV BL, AL  ;保存

  CMP AL, 0   ;全按下?

  JZ  DISP1   ;去输出全亮

  AND AL, 0F0H ;保留高四位

  CMP AL, 0F0H ;高四位全按下?

  JZ  DISP2   ;去输出高四位亮

  MOV AL, BL  ;恢复数据

  AND AL, 0FH ;保留低四位

  CMP AL, 0FH ;低四位全按下?

  JZ  DISP3   ;去输出低四位亮

  JMP START   ;其他情况,不做任何处理

DISP1:

  MOV AL,  0  ;全亮

  JMP DISP   ;去显示

DISP2:

  MOV AL,  0FH ;高四位亮

  JMP DISP   ;去显示

DISP2:

  MOV AL,  0F0H ;低四位亮

DISP:

  MOV DX, 01F3H

  OUT DX, AL  ;输出显示

  JMP START   ;显示完成,重新去检测

END