一道汇编题(有答案,需解释)

题目是:
参看图6-8,若采用无条件传送方式,编程实现以下操作:若K0键单独按下,发光二极管LED0~LED7将依次点亮,每个维持200ms;若K1键单独按下,发光二极管LED0~LED7将反向依次点亮,每个也维持200ms;其他情况下LED不点亮(设延时200ms的子程序DELAY已知,可直接调用)。(图我附在最后)

答案是:
MOV DX,PORT_T
MOV AL,DX
CMP AL,0FEH ;K0单独被按下,即最低位为0,其余位为高
JZ NEXT1
CMP AL,OFDH
JZ NEXT2
MOV AL,00H ;其他的情况将灯都不点亮
OUT DX, AL
JMP EXIT
NEXT1:MOV AL,01H ;K0被按下,LED0~LED7依次点亮,送1则对应灯亮
MOV CX,8
LOOP1:OUT PORT_T,AL
CALL DELAY
ROL AL,1
LOOP LOOP1
JMP EXIT
NEXT2:MOV AL,80H ;K1被按下,LED0~LED7反序点亮,送1则对应的灯亮
MOV CX,8
CALL DELAY
ROR AL,1
LOOP NEXT2
EXIT: ........

我不明白的是:
1.答案中的解释K0被按下,即最低位为0,其余位为高。为什么按下为0,而不是1。是三态缓冲器还是cpu决定,某个键被按下,那个键对应的位就为0,其余位高;或者是“人为”确定的?
2.这道题源于一道更简单的题:
图6-8是接口举例的综合,可以通过以下程序控制,实现发光二极管显示开关的开和状况。该例中输入接口和输出接口使用相同的口地址,不会出现矛盾,读者可以自行分析。
NEXT: MOV DX,PORT_IN
IN AL,DX
NOT AL
OUT DX,AL
CALL DELAY
JMP NEXT
为什么不会出现矛盾?

第一个问题,我不知道你有没有学过计算机逻辑方面的知识。计算机逻辑分为正逻辑和负逻辑。正逻辑就是高电平代表“1”,低电平代表“0”;负逻辑就是高电平代表“0”,低电平代表“1”。其实硬件实现是很容易的,从你的附图可以看出k0按下的时候与地接通为低电平,正逻辑代表“0”。这个主要还是认为设定的,比如在单片机可以通过接上拉电阻是出“0”代表高电平。
第二个问题,DX是输入输出端口,可以输入可以输出,为什么会出现矛盾。数字逻辑的特点是确定性,在任何时刻它的状态时确定的就没问题,不确定了就会出现竞争等矛盾,从而出现错误
温馨提示:内容为网友见解,仅供参考
无其他回答

汇编语言问题,题目如下,我知道答案,但不懂,求详细解释
堆栈段:21F0:0000~21F0:FFFF;代码段:31FF:0000~31FF:FFFF。以上,是按照 10000H 字节计算的。实际上,有些段是重叠的,重叠部分,可以用物理地址计算出来。OF = 0 DF = 0 ZF = 0 CF = 0

一道汇编语言题,望详细解释
它们入栈、出栈的占用空间的大小是不一样的。16位的汇编是2字节,32位的是4字节所以搞错。把图中的加、减4换成加减2就对了。当成32位的汇编了,push 一次。ESP-4 在16位汇编中:push ax sp-2 ;记住入栈-2,也就是分配16位,2个字节的空间,用来存放ax push bx sp-4 push cx ...

这个汇编题选神马???给个理由
NEG是汇编指令中的求补指令,NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1;因此10000按位取反后为11101111,加1为11110000,写成十六进制为F0H,因此答案在B和D之间选择。CF 进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否...

一道简单的汇编语言问题求详细解答
XOR ax,ax ;ax清零 mov bx,2 ;bx=2 mov cx, 4 ;cx=4做循环用 MOV DX,3 ;dx=3;l20:inc ax ;ax=ax+1 adc bx,ax ;bx=ax+bx+cf这个是防止溢出,SHR DX,1 ;移位指令,将DX进行移位,该指令会影响cf位。右移指令,是将最低位移入CF,CF位移入最高位。loope l20 ...

汇编练习题。求解释
MOV DX,SIZE DAT1 ;size操作符,当其操作的变量是dup复制的时,操作结果为变量的个数,否则为单个变量的字节数,此指令中,dat1不是dup复制的,单个变量的字节数为1,所以dx=01h.ADD DX,WORD PTR DAT1+4 ;从dat1开始偏移4个字节取一个字与dx相加然后把结果送给dx。dx=dx+0104h,...

汇编题目
答案:第1空:"5",第2空:"A" 。做法:1,出入栈每个数据以字(2bytes)为单位,入栈向低地址伸展,即入栈sp-n*2,出栈为sp+n*2,物理地址SS*10H+SP 2,常识小写字母ASCII码值比大写字母大20H,数字的ASCII码值低四位为数字,高四位相同 九、根据下列各题的要求,编制程序。1.用移位、...

求解一道汇编问题
因为基址寄存器是BX,所以段地址在DS中,其值为 3000H 物理

三道简单汇编题,答案有了,求解释。
MOV A,#20H ;传送指令 将立即数20H传送给A SETB C ; 位操作指令 置1指令 将进位标志的值置1 即C=1 MOV 30H,#50H ;传送指令 将立即数50H传送给片内数据存储器30H单元 即(30H)=50H ADDC A,30H ; 加法指令 (A)+(30H)+C=20H+50H+1=71H 结果送A (A)=71H...

汇编问题
为你正确解答:1000h:2346h 其中1000h表示段的首地址的前16位地址(后4位 按规定为0000) 2346h为段中有效地址 物理地址=段地址+有效地址=0100h×16+2346h=01000h+2346h=12346h 正确答案是:1000h:2346h = 12346h 0100h:2346h = 03346h 0010h:2346h = 02446h 0001h:2346h = 02356...

·一道简单的汇编语言问题求详细解答
ADD BX,1 ;bx=bx+1,BX=02H LOOP qq ;CX-1,即CX=0000 0000 0000 0010B,不等于0,转到QQ继续循环。第三次循环情况:QQ:shr cx,1 ;是将cx逻辑右移1位,CX=0000 0000 0000 0001B,CF=0 RCR AX,1 ;带进位循环右移,AX=0100 0000 0000 0000 0000B,CF=0 ADD BX,1 ;bx=bx+1,BX=03H...

相似回答