汇编问题
发布网友
发布时间:2022-04-22 06:43
我来回答
共2个回答
热心网友
时间:2022-04-07 20:48
2.已知某存储单元的逻辑地址是5555H:2222H,其物理地址应是
;
5555H*10H+2222H
=
57772H
对于这同一物理地址单元,若段基址改为5678H,则其偏移地址应是
。
57772H-5678H*10H
=
FF2H
4.8088/8086CPU在指令中可以作为寄存器间接寻址访问存储单元的4个寄存器是
BX,BP,SI,DI
,除法指令中32位被除数应放在两个寄存器,高16位放在
DX,低16位放在
AX
6.已知(AX)=0045H,(BL)=08H(4%)
写出分别执行指令后相应寄存器的内容
a.
MUL
BL
(AX)=
5000H
b.
ADD
AL,BL
(这问应该和a是分开的吧)
DAA
(AX)=
0053H
1.
指出下列真值对应的原码和补码:
X=+1010110B
[X]原=
[X]补=
A只有A表示了正数
Y=―1010110B
[Y]原=
[Y]补=
D负数的补码是正数部分取反加一
A.01010110B
B.11010110B
C.10101001B
D.10101010B
2.已知堆栈指针(SP)=06A8H,
(4%)
⑴.若执行POP
BX指令,则(SP)=
E,pop指令执行后sp指针向后移动
⑵.若执行CALL
SBRT指令,则(SP)=
A,调用CALL会将pc指针压栈。所以sp指针向前移动
A.06A6H
B.06A7H
C.06A8H
D.06A9H
E.06AAH
你可以用debug看看。
3.对于下列指令正确者打√,非法指令打×。(4%)
⑴.SUB
1000H,
DI
(
×)目的操作数不能为立即数
3)DIV15(×)
乘法不能乘以立即数
⑵.MOV
CX,
100H
(
√)
没问题
(4)ADD[AX].1234
(
×)
AX不能用作基址寄存器
1.将寄存器AX中内容通过移位的方法扩大1倍(假定原来AX内容不超过215)。
shl
ax,1
2.用一条串操作指令完成下列程序段的功能。(4%)
JCXZ
PCS2
PCS1:
MOV
AL,
DS:[SI]
CMP
ES:[DI],AL
JNZ
PCS2
INC
SI
INC
DI
LOOP
PCS1
PCS2:
……
REPE
CMPS
1.PSW寄存器中SF、
ZF和OF的作用分别是什么?
SF作用是判断运算结果的符号,运算结果为负SF=1;
ZF作用是判断运算结果是否为0,运算结果为零ZF=1;
OF的作用是判断运算结果是否溢出,运算结果溢出时OF=1。
2.在执行减法运算指令后,再执行指令JA
NEXT与再执行指令JG
NEXT的区别是什么?
运行减法之后,sf会被置为相应的符号,表示是否为正数或者负数。
JA判断符号是否为0,而且判断zf是否为零,也就是说对两个符号进行判断
JG之判断SF
3.在DEBUG中,显示数据段从偏移地址0020H到003FH为止的存储单元内容应使用什么命令?
D0020
003F
写出操作过程。若要修改0020H单元内容为55H,应使用什么命令?写出操作过程。
E0020(回车)
55(回车)
1.指出下列程序完成的工作。
DSLR
MACRO
LOCAL
DONE
MOV
AH,
1
INT
21H
CMP
AL,
‘A’
JC
DONE
CMP
AL,
‘Z’
JA
DONE
MOV
DL,
AL
MOV
AH,02H
INT
21H
DONE:
NOP
ENDM
从键盘读入一个字符,如果该字符在大写字母A-Z之间,则显示该字符
否则结束
2.指出下列程序完成的工作。
MOV
AL,BUF
TEST
AL,
80H
JZ
DONE
NEG
AL
DONE:
MOV
BUF,AL
判断内存中以BUF为地址的8位内容,如果为负数,则对该数取反,然后送回该内存
否则直接送回该内存。
注意:这段程序不是求绝对值,因为求绝对值要减1之后取反
4.指出下列程序完成的工作。
DATA
SEGMENT
后面是什么???????????
热心网友
时间:2022-04-07 22:06
请参考以下程序:
http://zhidao.baidu.com/question/339932378.html#reply-box-866028109
;用MASM5.0编译通过
;按同余法产生一组随机数N(1<N《50),并按N+50赋给45名同学的5门课程的成绩,
;要求编程实现计算每个同学的平均成绩,并根据平均成绩统计全班的成绩各等级的人数
;(A:90~100,B:80~89,C:70~79,D:66~69,E:60~65,F:60分以下),按以下格式显示:
;Total<总人数>
;A:<人数1>
;B:<人数2>
;C:<人数3>
;D:<人数4>
;E:<人数5>
;F:<人数6>
data segment
TDB 45
ADB 0
BDB 0
CDB 0
DDB 0
EDB 0
FDB 0
N DB 45 DUP(5 DUP(0));定义成绩存放单元
AVRDB 45 DUP(0);定义平均成绩存放单元
MESSDB 0dh,0ah
DB "Total $"
AADB " : "
M1DB " "
M2DB " ",0DH,0AH,24H
data ends
code segment
main proc far
assume cs:code,ds:data
start:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
PUSH DS
POP ES
;以下产生随机成绩
MOV CX,5*45
XOR AL,AL
OUT 43H,AL
IN AL,40H
MOV DI,OFFSET N
NEXT:
MOV BX,11
MOV AH,0
MUL BX
ADD AX,5463
MOV DX,0
MOV BX,50
DIV BX
ADD DL,50
MOV [DI],DL
INC DI
MOV AL,DL
LOOP NEXT
;以下求平均成绩
MOV DI,OFFSET AVR
MOV SI,OFFSET N
MOV CX,45
L0:
PUSH CX
MOV CX,5
MOV AX,0
L1:
MOV BH,0
MOV BL,[SI]
ADD AX,BX
INC SI
LOOP L1
MOV BL,5
DIV BL
MOV [DI],AL
POP CX
INC DI
LOOP L0
;以下统计成绩类型
MOV CX,45
MOV BX,OFFSET AVR
C_NEXT:
MOV AL,[BX]
CMP AL,90
JB C1
INC A
JMP C_END
C1:
CMP AL,80
JB C2
INC B
JMP C_END
C2:
CMP AL,70
JB C3
INC C
JMP C_END
C3:
CMP AL,66
JB C4
INC D
JMP C_END
C4:
CMP AL,60
JB C5
INC E
JMP C_END
C5:
INC F
C_END:
INC BX
LOOP C_NEXT
;以下显示结果
MOV DX,OFFSET MESS
MOV AH,09
INT 21H
MOV AL,T
CALL BIN_D
MOV AL,A
MOV AA,'A'
CALL BIN_D
MOV AL,B
INC AA
CALL BIN_D
MOV AL,C
INC AA
CALL BIN_D
MOV AL,D
INC AA
CALL BIN_D
MOV AL,E
INC AA
CALL BIN_D
MOV AL,F
INC AA
CALL BIN_D
RET
main endp
;=====================
;以下数字-ASCII码转换
BIN_D PROC NEAR
MOV AH,0
MOV BL,10D
DIV BL
CMP AL,0
JE NO10
ADD AX,3030H
MOV M1,AL
MOV M2,AH
JMP DISP11
NO10:
ADD AH,30H
MOV M1,AH
MOV AL,' '
MOV M2,AL
DISP11:
MOV DX,OFFSET AA
MOV AH,09
INT 21H
RET
BIN_D ENDP
;========================
code ends
end start