INT 10H中断的不明白之处ah=13h

m_sad 2013-02-09 10:00:00
RT请看程序:

org 7c00h
mov ax,cs ;
mov ds,ax
mov es,ax
call Menu
call Menu2
jmp $

Menu:
mov ax,Item1
mov bp,ax
mov ax,1301h
mov bx,000ch
mov cx,4
mov dx,0c30h
int 10h
ret
Menu2:
mov ax,Item2
mov bp,ax
mov ax,01301h
mov bx,0f400h
mov cx,10
mov dx,00e21h
int 10h
ret

... ...

Item1: db "Game"
Item2: db "Start Game"

times 510 - ($ - $$) db 0

dw 0xaa55

本意是想写个小玩意儿,不到一个Boot的大小,可是为什么只显示了一个“Game”,“Start Game”为什么没有显示(在虚拟机中运行),在Debug里可以看到程序执行了Menu2了,为什么没有显示Item2?
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewanderer 2013-02-10
  • 打赏
  • 举报
回复
mov bx,0f400h <- 不在一页的东西应该不可能同时被看到吧
m_sad 2013-02-10
  • 打赏
  • 举报
回复
原来如此啊,把bh和bl搞颠倒了,唉,我说怎么回事呢!谢了,祝你新年快乐!
引用 1 楼 bluewanderer 的回复:
mov bx,0f400h <- 不在一页的东西应该不可能同时被看到吧
CODE SEGMENT ASSUME CS:CODE START: JMP NEXT BUFF DW 0 BUFF1 DW 2 DUP(0) MAIN: PUSHF CALL DWORD PTR CS:BUFF1 PUSH AX PUSH BX PUSH CX PUSH DX XOR BH,BH MOV AH,3 INT 10H ;读光标位置 MOV CS:BUFF,DX MOV AH,2 XOR BH,BH MOV DX,47H INT 10H ;置光标位置 MOV AH,2      INT 1AH ;读系统时间 PUSH DX PUSH CX POP BX PUSH BX CALL SHOW1 CALL SHOW2 POP BX XCHG BH,BL CALL SHOW1 CALL SHOW2 POP BX CALL SHOW1 MOV DX,CS:BUFF MOV AH,2 XOR BH,BH INT 10H ;置光标位置 POP DX POP CX POP BX POP AX IRET ;中断返回 ;以下为将系统时间转化为对应的ASCLL码显示的程序 SHOW1 PROC NEAR PUSH BX MOV CL,4 MOV AL,BH SHR AL,CL ADD AL,30H ;转换为ASCLL码 CALL SHOW CALL XJB POP BX MOV AL,BH AND AL,0FH ADD AL,30H CALL SHOW CALL XJB RET SHOW1 ENDP ;以下为显示”:“符号的程序 SHOW2 PROC NEAR MOV AL,‘:‘ CALL SHOW CALL XJB RET SHOW2 ENDP ;以下是对光标的处理的程序 XJB PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,3 MOV BH,0 INT 10H ; 读光标位置 INC DL MOV AH,2 INT 10H ; 置光标位置 POP DX POP CX POP BX POP AX RET XJB ENDP ;以下是将AL里的内容显示的程序 SHOW PROC NEAR PUSH AX PUSH BX PUSH CX MOV AH,09H MOV BX,2FH MOV CX,1 INT 10H ;在光标位置显示字及其属性 POP CX POP BX POP AX RET SHOW ENDP;以下为取中断,保存中断,设置新的这段类型的程序 NEXT: PUSH CS POP DS MOV AX,351CH ;取中断向量 INT 21H MOV BUFF1,BX ;保存偏移地址 MOV BX,ES ;保存段地址 MOV BUFF1+2,BX MOV DX,OFFSET MAIN MOV AL,1CH ; 中断类型放日AL MOV AH,25H ; 设置中断向量的功能调用 INT 21H ;改变中断向量 LEA DX,NEXT SUB DX,OFFSET START MOV CL,4 SHR DX,CL ADD DX,11H MOV AX,3100H       INT 21H CODE ENDS END START

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧