1、发现在新int9中断程序中,将调用原int9中断那两条指令写到“F1”后面,则实现不了F1改变颜色的功能,暂时不知道为什么?
回答:因为正常情况下汇编是顺序执行的,所以得先执行原int9的功能来处理键盘输入细节,后再执行新功能。
2、在实现“在屏幕上显示‘a’到‘z’的例子”中,主程序后有段“将int9恢复为原来的地址”的指令,删去后程序仍能正常运行功能,不知道作用在什么?
回答:为保证程序的完整性。因为实现该程序后,将原int9的地址移走了,以后的程序使用int9中断就不行了,所以得把原int9恢复。...
- [zihaolee] 哦 我记得就是debug里,用g直接把程序运完,发现寄存器不改变;用t或p单步运行,就能看到寄存器 04/28 15:52
- [mywiil] 今天做rep movsb(P232)页时,发现用G直接执行完程序,寄存器不会改变,用T单步执行就能改 04/25 20:10
[2010-05-06 10:43] 第十五章笔记
阅读全文 |
评论次数(0) |
浏览次数(555) |
所属类型(阶段心得)
[2010-05-03 11:27] “在屏幕中间显示当前月份”的问题
看到这条程序,分开个位十位,我就想到div,调试成功,大家学习指教~
原程序:
mov ah,al
mov cl,4
shr ah,cl ;除以16得到十位数
and al,00001111b ;得到个位的数
add ah,30h
add al,30h
结果:al放个位,ah放十位
改写的程序:
mov ah,0
mov bl,16
div bl ;al存放商(十位),ah存放余数(个位)
add ah,30h
add al,30h ...
原程序:
mov ah,al
mov cl,4
shr ah,cl ;除以16得到十位数
and al,00001111b ;得到个位的数
add ah,30h
add al,30h
结果:al放个位,ah放十位
改写的程序:
mov ah,0
mov bl,16
div bl ;al存放商(十位),ah存放余数(个位)
add ah,30h
add al,30h ...
阅读全文 |
评论次数(0) |
浏览次数(580) |
所属类型(阶段心得)
[2010-04-25 17:56] 关于T执行与G执行(1)
今天做rep movsb(P232)页时,发现用G直接执行完程序,寄存器不会改变,用T单步执行就能改变。有待发掘。
data segment
db 'welcome to masm!'
db 16 dup (0)
data ends
cod segment
start:
mov ax,data
mov ds,ax
mov si,0
mov di,16
mov cx,16
s:
mov al,[si]
mov [di],al
inc di
inc si
loop s
mov ax,4c00h
int 2...
data segment
db 'welcome to masm!'
db 16 dup (0)
data ends
cod segment
start:
mov ax,data
mov ds,ax
mov si,0
mov di,16
mov cx,16
s:
mov al,[si]
mov [di],al
inc di
inc si
loop s
mov ax,4c00h
int 2...
阅读全文 |
评论次数(2) |
浏览次数(508) |
所属类型(阶段心得)
页码数(1):
1