Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2647233
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2008-09-11 21:22:06

最近在看王爽的<汇编语言>,感觉理论与实践结合比较不错,是本学习汇编的好书

下面实现数据首尾交换:

assume cs:codesg
codesg segment
 dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
 dw 0, 0, 0, 0, 0, 0, 0, 0
;
start:  mov ax, 0  ;多加了两行
 mov ax, 0
 mov ax, cs
 mov ss, ax
 mov sp, 32
 mov bx, 0
 mov cx, 8
 s:push cs:[bx]
 add bx, 2
 loop s
 mov bx, 0
 mov cx, 8
 s0:pop cs:[bx]
 add bx, 2
 loop s0
 
 mov ax, 4200h
 int 21
codesg ends
end start

在实验过程中,要加两行mov ax, 0才达到实验的目的(数据交换),不知道为什么?
在有的实验中,经常加mov ax, 0才能实现数据正常保存在栈中,不知为什么?
我是用的tr调试工具,可能TR的BUG, debug没有此问题

************************************
assume cs:code,ds:data,ss:stack
data segment
 dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
 dw 0, 0, 0, 0, 0, 0, 0, 0
stack ends
code segment
start:  mov ax, 0
 mov ax, 0
 mov ax, stack
 mov ss, ax
 mov sp, 16
 mov ax, data
 mov ds, ax
 mov bx, 0
 mov cx, 8
 s:  push [bx]
 add bx, 2
 loop s
 mov bx, 0
 mov cx, 8
 s0: pop [bx]
 add bx, 2
 loop s0
 mov ax, 4200h
 int 21
code ends
end start


************* run.bat ************************
del "%1.obj"
del "%1.exe"
ml /c /nologo "%1.asm"
doslnk "%1.obj"
阅读(1642) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-09-12 13:09:00

汇编语言:: http://books.google.cn/books?id=YrW5lnhv-PEC&pg=PA135&lpg=PA135&dq=%22welcome+to+masm%22+ds%E5%92%8Cdi+-0b800h&source=web&ots=0JyvzLAPxD&sig=tAg93oio2n3rYWmHqUz6mTu9-lY&hl=zh-CN&sa=X&oi=book_result&resnum=10&ct=result#PPA33,M1

chinaunix网友2008-09-12 10:09:06

汇编学习资料:http://www.asmedu.net/blog/user/usermain.jsp?neighborId=7882