微机原理-汇编习题
R1的内容为1234H,本 段程序执行后,写出VAR2中的数值?画出程序流程图。
DSEG SEGMENT VAR1 DW ? VAR2 DB 5 DUP (?)
DSEG ENDS CSEG SEGMENT
… BAP PROC FAR
PUSH AX … PUSH SI MOV AX,VAR1 CMP AX,8000H JC DONE MOV SI, OFFSET VAR2 MOV CX, LENGTH VAR2 MOV BX,10
七段显示码 40H 79H 24H 30H 19H
十进制数 5 6 7 8 9
七段显示码 12H 02H 78H 00H 18H
a
f
b
g
e d
c
DP
DP g f e d c b a
七段码位为0时发光,为1时熄灭。
十进制数’0’,a、b、c、d、e、f均为0, 发光。g、DP为1,七段显示码为40H
实现以上操作的程序
6、已知
ORG 0200H ARY DW -1,2,-3,4
CNT DW $-ARY
VAR DW ARY,$+4 RST DW ? … MOV AX, ARY
AX = 0FFFFH , BP = 020AH , BX = 0200H ,CX = 0008H , DX = 0210H ,SI= 020EH
ADD SI,CX DEC SI AGAIN: XOR DX, DX DIV BX ADD DL, 30H MOV [SI],DL DEC SI LOOP AGAIN DONE: POP SI ... POP AX RET BAP ENDP CSEG ENDS END
答:(1)功能:将16位的二进制数变为ASCII码 (2)VAR2 30H,34H,36H,36H,30H (3)流程图略
伪指令
SEGMENT … ENDS 定义数据段,段名为SDATA DB 在数据段中定义字节数据,建立七段码表TABLE OFFSET获取表TABLE相对于数据段基址的偏移
DS=1000 BX=0000
...
存储器
40 10000H 79 10001H 24 10002H 30 10003H 19 10004H 12 10005H 02 10006H
SDATA SEGMENT TABLE: DB 40H,79H,24H,30H,19H ;七段码表格
DB 12H,02H,78H,00H,18H
SDATA ENDS
… MOV AL,5 MOV BX,OFFSET TABLE XLAT TABLE
;数字5的偏移量→AL ; 表首地址→BX ;查表得到AL=12H
1、已知某指令的逻辑地址CS=0074H IP=5000H,求其物理 地址。
解:物理地址为0074H×10H+5000H = 5740H
2、有两个字807FH,5FEFH,它们在8086系统的存储器中 的地址分别是41020H和41023H,请用图示它们在存储器 中的位置。若它们的段地址是4000H,这两个字的有效地 址是什么?
解: 堆栈段所在段的物理地址范围为12000H~21FFFH. 当前堆栈段的范围:12000H~127FFH. SP的内容为800H-14H(20) =7ECH.
4、若已知当前DS=1230H,在偏移地址为00A1H开始的存 储器中连续存放6个字节的数据分别为 11H,22H,33H,44H,55H和66H.请指出这些数据在存储器中的 物理地址。如果要从存储器中以字读取方式读出这些数据, 需要访问几次存储器?(几个总线周期)
解:由于访问非规则字,需要对存储器访问6次。
123A1H 11H 123A2H 22H 123A4H 33H 123A4H 44H 123A5H 55H 123A6H 66H
5、对于给定的数据定义,画图说明下列语句所分配的存储空间 及初始化的数据,并写出变量R1的值。 A1 DW 1,2,3,’AB’ A2 DB ‘ABC’ A3 DB 6 DUP (?) R1 EQU A3-A1
解: (1)存储位置图如下图 (2)有效地址分别为0020H和1023H
41020H 41021H
… 41023H 41024H
7FH 80H … EFH 5FH …
3、在某系统中,已知当前SS=1200H,SP=0800H,请说明 该堆栈段所在段的物理地址范围,若在当前堆栈段中存入 20个字节数据,那么SP的内容为什么值?
MOV BP, OFFSET VAR
MOV BX, VAR
MOV CX, CNT
MOV DX, VAR+2
LEA SI, RST
… 此程序执行后AX = ,BP = ,BX = ,CX = ,DX = ,
7、若十进制数字0~9的LED七段码对照下表,试用XLAT指 令求数字5的七段码值:
十进制数 0 1 2 3 4