

- [jall] 他只是讲解,做个例子,实际上任何地址或者寄存器在使用前都需要确保没有程序在占用,覆盖数据的后果难以想 10/03 02:25
- [wsb200514] 哈哈,确实。看题目的意思ax里面肯定是有数据的,不然不会push它,既然有数据就不应该用ax去做数据 05/25 16:55
- [bluestorm80] 后来说这个闪烁的光标是显卡实现的。具体如何实现的,就先不管那么多了 11/23 17:08
- [younggay] en .... 11/18 14:17
- [younggay] 嗯。博主的思路都很合理。最后一种的思路很灵活,有味道。 11/18 13:32
- [scuzg] 结果很正确嘛! 视为无符号数,10-11不够减则借1位,被减数成了260,则: 260-11=2 11/05 13:39
- [tinyparticle] 程序完成 10/18 12:29
- [tinyparticle] 测试正确 10/15 18:00
- [bluestorm80] 正像前面研究的那样,栈是一种很重要的技术。在里面保存着下一条要执行的指令,至少目前我是这么看的。所以 10/15 06:54
- [scuzg] 执行loop语句时,IP值已经指向loop之下的那一条指令了。如果cx=0,那么CPU将读取当前IP 10/11 16:15
[2009-11-21 20:32] 关于DOS光标的初步研究
在DOS下面命令行中总有一个在闪烁的下划线,这个就是光标。不过一直找不到,它是如何实现。经过研究中断的代码后,找到了一点儿线索。就是内存字单元0000:0450保存着光标的位置坐标。低字节保存着列位置,高字节保存行位置。...
阅读全文 |
评论次数(1) |
浏览次数(840) |
所属类型(读书笔记)
[2009-11-20 16:30] 过滤一以0结尾的字符串中的空格
dseg segment
STRA db 'This is a new letter!',0
STRB db 50 dup (?)
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
;
mov si,offset stra
mov di,offset strb
;
count:mov cl,[si]
...
STRA db 'This is a new letter!',0
STRB db 50 dup (?)
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
;
mov si,offset stra
mov di,offset strb
;
count:mov cl,[si]
...
阅读全文 |
评论次数(0) |
浏览次数(509) |
所属类型(习题库)
[2009-11-20 16:20] 求一字符串的长度
dseg segment
STRA db 'This is a new letter!',0
LEN dw ?
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
;
mov si,offset stra
count:mov cl,[si]
inc si
jcxz finish
jmp c...
STRA db 'This is a new letter!',0
LEN dw ?
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
;
mov si,offset stra
count:mov cl,[si]
inc si
jcxz finish
jmp c...
阅读全文 |
评论次数(0) |
浏览次数(506) |
所属类型(习题库)
[2009-11-19 19:46] 依次重复4次AL中的每一位,得到的32位结果放到DX:AX中
方案一:
cseg segment
assume cs:cseg
start: mov al,0A3h
xor dx,dx
;
mov cx,4
r0:push cx
mov cx,4
r1:rol al,1
rcl dx,1
ror al,1
loop r1
rol al,1
pop...
cseg segment
assume cs:cseg
start: mov al,0A3h
xor dx,dx
;
mov cx,4
r0:push cx
mov cx,4
r1:rol al,1
rcl dx,1
ror al,1
loop r1
rol al,1
pop...
阅读全文 |
评论次数(0) |
浏览次数(499) |
所属类型(习题库)
[2009-11-19 16:40] 求32位有符号数的补码
设一个32位有符号数存放在DX:AX中,求其补码
dseg segment
XX dw ? ;存放结果的高16位
YY dw ? ;存放结果的低16位
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start:mov bx,dseg
mov ds,bx
;
mov ax,3
mov dx,00h
;
test dh,1000000b
jz over
...
dseg segment
XX dw ? ;存放结果的高16位
YY dw ? ;存放结果的低16位
dseg ends
;
cseg segment
assume cs:cseg,ds:dseg
start:mov bx,dseg
mov ds,bx
;
mov ax,3
mov dx,00h
;
test dh,1000000b
jz over
...
阅读全文 |
评论次数(0) |
浏览次数(501) |
所属类型(习题库)
[2009-11-19 16:32] 关于NEG命令
NEG的全文是negate,意思是否定。对于该命令执行的操作是用0减去操作数。也就是取其相反数。有的书上翻译成取补指令,容易与补码混淆。
补码的定义是:正数的补码是其原码,负数的补码是原码取反加1.
这一点要清楚。...
补码的定义是:正数的补码是其原码,负数的补码是原码取反加1.
这一点要清楚。...
阅读全文 |
评论次数(0) |
浏览次数(560) |
所属类型(读书笔记)
[2009-11-19 16:11] 统计AX寄存器中置1位的个数
cseg segment
assume cs:cseg
start:mov ax,0ffffh
xor bx,bx
mov cx,16
t0:rol ax,1
adc bx,0
loop t0
mov ax,4c00h
int 21h
cseg ends
end start...
assume cs:cseg
start:mov ax,0ffffh
xor bx,bx
mov cx,16
t0:rol ax,1
adc bx,0
loop t0
mov ax,4c00h
int 21h
cseg ends
end start...
阅读全文 |
评论次数(0) |
浏览次数(545) |
所属类型(习题库)
[2009-11-19 13:40] 将BX中的数值以进制的形式输出到屏幕上,4位一组分开显示
cseg segment
assume cs:cseg
start:mov bx,0f02ah
;
mov cx,16
space:cmp cx,16
jz bin
test cx,0003h
jnz bin
mov dl,20h
mov ah,02
int 21h
;
bin:xor dl,dl
shl bx,1
...
assume cs:cseg
start:mov bx,0f02ah
;
mov cx,16
space:cmp cx,16
jz bin
test cx,0003h
jnz bin
mov dl,20h
mov ah,02
int 21h
;
bin:xor dl,dl
shl bx,1
...
阅读全文 |
评论次数(0) |
浏览次数(463) |
所属类型(习题库)
[2009-11-18 21:21] 简单查找子字符串
判断一个字符串是否是另一个字符串的子串:
dseg1 segment
strm db "THIS IS A STRING!",0
dseg1 ends
dseg2 segment
strs db "STRING",0
flag db ?
dseg2 ends
;
cseg segment
assume cs:cseg,ds:dseg1,es:dseg2
start:mov ax,dseg1
mov ds,ax
mov ax,dseg2
mov es,ax
...
dseg1 segment
strm db "THIS IS A STRING!",0
dseg1 ends
dseg2 segment
strs db "STRING",0
flag db ?
dseg2 ends
;
cseg segment
assume cs:cseg,ds:dseg1,es:dseg2
start:mov ax,dseg1
mov ds,ax
mov ax,dseg2
mov es,ax
...
阅读全文 |
评论次数(0) |
浏览次数(460) |
所属类型(习题库)
[2009-11-17 20:33] 存储器数据交换
有这样一个题目:
下列程序片段完成什么功能,可否有更简单的方法实现同样的功能?
XCHG AX,[SI]
XCHG AX,[DI]
XCHG AX,[SI]
其实这个片段可以从2个方面来看:
①交换了DS:SI与DS:DI两个字存储单元的内容
②DS:SI与DS:DI指向的内容进行了交换
我能想到的方法有下面的几种:
0000 start: ;利用堆栈交换
0000 21 FF 34 push [si]
0002 21 FF 35 push [di]
0004 22 8F 04 pop [si]
0006 22 8F 05 pop...
下列程序片段完成什么功能,可否有更简单的方法实现同样的功能?
XCHG AX,[SI]
XCHG AX,[DI]
XCHG AX,[SI]
其实这个片段可以从2个方面来看:
①交换了DS:SI与DS:DI两个字存储单元的内容
②DS:SI与DS:DI指向的内容进行了交换
我能想到的方法有下面的几种:
0000 start: ;利用堆栈交换
0000 21 FF 34 push [si]
0002 21 FF 35 push [di]
0004 22 8F 04 pop [si]
0006 22 8F 05 pop...
阅读全文 |
评论次数(1) |
浏览次数(799) |
所属类型(读书笔记)
『 查看更多文章 』