主题:一个初学者的 问题
小牛斑斑
[专家分:1210] 发布于 2007-03-04 13:47:00
题:
若(bx)=1000h,(ds)=2000h,(21000h)=12h,(21001h)=34h,执行lea si,[bx]指令后,si寄存器的 内容是____.
lea不是取有效地址吗??为什么答案是:3412
回复列表 (共3个回复)
沙发
ccpp [专家分:9360] 发布于 2007-03-05 12:47:00
是有问题,
应该是 1000h
板凳
xit001 [专家分:20] 发布于 2007-03-23 18:55:00
应该是把BX的内容给了SI
3 楼
mygoogle [专家分:500] 发布于 2007-03-24 15:28:00
QICHE PROC near ;汽车子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,0
MOV AL,4
INT 10H
MOV AH,0BH ;设置彩色组颜色为绿、红、黄
MOV BH,01
MOV BL,00
INT 10H
CLEAR 0,0,24,79,7 ;清屏宏调用
LEA DI,CAR ;DI指向字符图形表
MOV DH,5 ;从第5行5列位置开始显示汽车
MOV DL,0
CALL MOVE_SHAPE
RET
QICHE ENDP
MOVE_SHAPE PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AH,0FH ;取当前显示方式
INT 10H
SUB CH,CH
MOV CL,[DI] ;CL放字符个数
INC DI ;DI指向字符图形表中的第一个字符
MOV CHAR_CNT,CX
MOV POINTER,DI
MOV LINE_ON,DH
MOV COL_ON,DL
PLOT_NEXT:
ADD DH,[DI+2] ;改变行列坐标
ADD DL,[DI+3]
CMP DL,80 ;出屏否?
JB MOV_CRSR
Pop DI
Pop DX
Pop CX
Pop BX
Pop AX
jmp exit2
MOV_CRSR:
MOV AH,2
INT 10H
MOV AL,[DI] ;取字符值
MOV BL,[DI+1] ;取字符属性
PUSH CX
MOV CX,1
MOV AH,09 ;显示字符
INT 10H
POP CX
ADD DI,4 ;DI指向下一个字符
LOOP PLOT_NEXT
CALL DLY
CALL ERASE
JMP SHORT PLOT_NEXT
exit2: ret
MOVE_SHAPE ENDP
ERASE PROC NEAR
MOV CX,CHAR_CNT
MOV DI,POINTER
MOV DH,LINE_ON
MOV DL,COL_ON
ERASE_NEXT:
ADD DH,[DI+2]
ADD DL,[DI+3]
MOV AH,2
INT 10H
MOV AL,[DI]
MOV BL,0
PUSH CX
MOV CX,1
MOV AH,9
INT 10H
POP CX
ADD DI,4
LOOP ERASE_NEXT
MOV CX,CHAR_CNT
MOV DI,POINTER
MOV DH,LINE_ON
INC COL_ON
MOV DL,COL_ON
RET
ERASE ENDP
CODE ENDS
END start
我来回复