;功能:将任意寄存器进行位移操作
;使用说明:movbit opr,reg,num
;其中reg为寄存器,opr为位移操作类型(如shl,shr,rcl等),num为位移次数
movbit macro opr,reg,num
rept num
opr reg
endm
endm...
- [e56004474] mark 07/25 14:36
- [heliang6291] 其他寄存器关注了,就是没关注堆栈.....吸取教训了 07/04 17:40
- [chinatree] 你debug不看寄存器吗?自己写的程序,运行到哪一步,每个寄存器的值都应该在心中有数。 07/04 17:32
- [heliang6291] 上述问题自己解决了,是push 和 pop 没有及时对应导致的,也印证 chinatree的观点是很 07/04 17:02
- [heliang6291] 可能是与栈段有关,我这次设置了1000个字节的栈段空间,居然创建成功100个文件了. 可是,我这里 07/04 16:50
- [heliang6291] 我设置了100个字节的栈段,也出现了这个错误,郁闷,不知道问题出在哪里了,chinatree帮我想想 07/04 16:43
- [heliang6291] 那我是否需要设置一个栈段来解决这个问题呢? 07/04 16:39
- [chinatree] 实验了下,如果创建的目录没有C:\这3个字符就会成功。有的话Ax=5。 虽然提示写入失败,不过估计 07/04 14:42
- [游客] 晚上嘛,现在没法试的。 07/03 14:41
- [heliang6291] 没人知道吗? 07/03 13:20
- [heliang6291] 是啊,我看看要用软驱,我没软驱,所以就不做了。。。。 而且对于学习杨季文的没影响了 王爽的那些, 06/20 14:17
- [fpamc] 咦?这位同学的实验17和课设2呢??怎么没有做?就杨季文啦? 06/19 09:46
[2012-07-25 13:03] [80x86]宏指令,强大的移位指令(第7章第20题)
阅读全文 |
评论次数(1) |
浏览次数(1000) |
所属类型(汇编作业)
[2012-07-25 11:58] [80x86]宏指令,以16进制形式显示AL内容(第7章第19题)
;功能:将1位16进制数转换为ASCII,请使用前确保为1位16进制数
;说明:入口AL(低4位),出口AL
htoasc macro
and al,0fh ;清空前4位
add al,90h
daa
adc al,40h
daa
endm
;功能:显示字符
echoch macro char
ifnb <char>
ifdifi <char>,<dl>
mov dl,char
endif
endif
mov ah,2
int 21h
endm
;功能:将2位16进制数显示AL内容的宏,调用已定义的htoasc和echoch
h...
;说明:入口AL(低4位),出口AL
htoasc macro
and al,0fh ;清空前4位
add al,90h
daa
adc al,40h
daa
endm
;功能:显示字符
echoch macro char
ifnb <char>
ifdifi <char>,<dl>
mov dl,char
endif
endif
mov ah,2
int 21h
endm
;功能:将2位16进制数显示AL内容的宏,调用已定义的htoasc和echoch
h...
阅读全文 |
评论次数(0) |
浏览次数(732) |
所属类型(汇编作业)
[2012-07-24 14:50] [80x86]宏指令,将1位16进制数转换为ASCII(第7章第15题)
;功能:将1位16进制数转换为ASCII,请使用前确保为1位16进制数
;说明:入口AL(低4位),出口AL
htoas macro
and al,0fh ;清空前4位
add al,90h
daa
adc al,40h
daa
endm...
;说明:入口AL(低4位),出口AL
htoas macro
and al,0fh ;清空前4位
add al,90h
daa
adc al,40h
daa
endm...
阅读全文 |
评论次数(0) |
浏览次数(712) |
所属类型(汇编作业)
[2012-07-24 14:38] [80x86]宏指令-定义栈段(第7章第12题)
;定义堆栈段的宏指令,使用:setss x,其中x为栈段大小(字节)
setss macro setss_num
sseg segment
db setss_num dup (0)
sseg ends
endm...
setss macro setss_num
sseg segment
db setss_num dup (0)
sseg ends
endm...
阅读全文 |
评论次数(0) |
浏览次数(737) |
所属类型(汇编作业)
[2012-07-24 14:28] [80x86]宏指令,换行(第7章第11题)
;利用BIOS显示程序用宏指令实现回车键换行
newline macro
push ax
push bx
push cx
mov cx,1
mov bh,0
mov ah,0ah
int 10h ;此处因AL已经读取了回车键,故不再设置AL
mov al,0ah
int 10h
pop cx
pop bx
pop ax
endm...
newline macro
push ax
push bx
push cx
mov cx,1
mov bh,0
mov ah,0ah
int 10h ;此处因AL已经读取了回车键,故不再设置AL
mov al,0ah
int 10h
pop cx
pop bx
pop ax
endm...
阅读全文 |
评论次数(0) |
浏览次数(712) |
所属类型(汇编作业)
[2012-07-24 13:47] [80x86]宏指令,压栈所有寄存器(不含SS)(第7章第11题)
;将所有寄存器入栈的宏指令,调用:push_all
(1)
push_all macro
irpc push_reg,abcd
push push_reg&x
endm
irpc push_reg,cde
push push_reg&s
endm
endm
(2)
push_all macro
irp push_reg,<ax,bx,cx,dx,cs,ds,es>
push push_reg
endm
endm
(3)
push_all macro
push ax
push bx
push cx
push dx
push cs
push ds
p...
(1)
push_all macro
irpc push_reg,abcd
push push_reg&x
endm
irpc push_reg,cde
push push_reg&s
endm
endm
(2)
push_all macro
irp push_reg,<ax,bx,cx,dx,cs,ds,es>
push push_reg
endm
endm
(3)
push_all macro
push ax
push bx
push cx
push dx
push cs
push ds
p...
阅读全文 |
评论次数(0) |
浏览次数(681) |
所属类型(汇编作业)
[2012-07-21 02:00] [80X86] T6-15 (第6章第15题)
;程序名:T6-15.asm
;功能:去掉字符串相应空格
;入口参数:(1)ah=功能号,1为去掉前导空格,2为去掉尾部空格,
; 3为去掉前导和尾部空格;
; (2)ds:dx指向字符串首地址;
;出口参数:ds:dx指向字符串首地址,字符串以0结束
;说明:字符串以0结束
removenul proc near
push di
push si
push bx
push cx
push ax
push es ;保护现场
push ax
mov di,dx
push di
mov ax,ds
mov...
;功能:去掉字符串相应空格
;入口参数:(1)ah=功能号,1为去掉前导空格,2为去掉尾部空格,
; 3为去掉前导和尾部空格;
; (2)ds:dx指向字符串首地址;
;出口参数:ds:dx指向字符串首地址,字符串以0结束
;说明:字符串以0结束
removenul proc near
push di
push si
push bx
push cx
push ax
push es ;保护现场
push ax
mov di,dx
push di
mov ax,ds
mov...
阅读全文 |
评论次数(0) |
浏览次数(737) |
所属类型(汇编作业)
[2012-07-20 20:22] [80X86] T6-14 (第6章第14题)
;程序名:T6-14.asm
;功能:截取字符串某子串
;入口参数:(1)es:di指向字符串首地址
; (2)ah为截取子串的开始相对地址,al为子串长度
;出口参数:子串存放开始地址为es:di
;说明:(1)如果子串截取开始地址超过原字符串则出错,不执行
; (2)字符串以0结束,子串也以此结束
dbcut proc near
jmp dbcut_begin
dbcut_stor db 256 dup (?) ;出口参数存放缓冲区
dbcut_begin:
push ds
push si
pus...
;功能:截取字符串某子串
;入口参数:(1)es:di指向字符串首地址
; (2)ah为截取子串的开始相对地址,al为子串长度
;出口参数:子串存放开始地址为es:di
;说明:(1)如果子串截取开始地址超过原字符串则出错,不执行
; (2)字符串以0结束,子串也以此结束
dbcut proc near
jmp dbcut_begin
dbcut_stor db 256 dup (?) ;出口参数存放缓冲区
dbcut_begin:
push ds
push si
pus...
阅读全文 |
评论次数(0) |
浏览次数(768) |
所属类型(汇编作业)
[2012-07-19 14:43] [80x86]作业 T6_13(第6章第13题)
;程序名:T6-13.asm
;功能:将字符串2插入到字符串1的指定位置,远过程
;入口参数:字符串1的首地址段值和偏移压栈,字符串2的首地址段值和偏移再压栈
;使用:call far ptr insert
;说明:al为插入位置,其中al为0,表示插在字符串1之前。
;说明:字符串均以0结束
insertb proc far
jmp insert_do
storb db 255 dup (?) ;预留缓冲区,根据需要可适当调整缓冲区大小
insert_do:
push bp
mov bp,sp
push ds
push es
push si
push d...
;功能:将字符串2插入到字符串1的指定位置,远过程
;入口参数:字符串1的首地址段值和偏移压栈,字符串2的首地址段值和偏移再压栈
;使用:call far ptr insert
;说明:al为插入位置,其中al为0,表示插在字符串1之前。
;说明:字符串均以0结束
insertb proc far
jmp insert_do
storb db 255 dup (?) ;预留缓冲区,根据需要可适当调整缓冲区大小
insert_do:
push bp
mov bp,sp
push ds
push es
push si
push d...
阅读全文 |
评论次数(0) |
浏览次数(741) |
所属类型(汇编作业)
[2012-07-19 13:46] [80x86]作业 T6_11(第6章第11题)
;程序名:T6-11.asm
;说明:该过程为远过程,将一个字符串中的小写字母转换为大写字母(以0结尾)
;入口参数:将字符串的段值和偏移入栈,即(ss:sp)指向偏移,(ss:sp+2)指向段值
;使用:call far ptr a_to_A
a_to_A proc far
push bp
mov bp,sp
push dx
push es
push cx
push di
push ax
les di,[bp+4]
cmp byte ptr es:[di],0
jz a_to_A_end ;为空字符串则结束
cld
mov cx,0ffffh
...
;说明:该过程为远过程,将一个字符串中的小写字母转换为大写字母(以0结尾)
;入口参数:将字符串的段值和偏移入栈,即(ss:sp)指向偏移,(ss:sp+2)指向段值
;使用:call far ptr a_to_A
a_to_A proc far
push bp
mov bp,sp
push dx
push es
push cx
push di
push ax
les di,[bp+4]
cmp byte ptr es:[di],0
jz a_to_A_end ;为空字符串则结束
cld
mov cx,0ffffh
...
阅读全文 |
评论次数(0) |
浏览次数(739) |
所属类型(汇编作业)
『 查看更多文章 』