. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->更灵活的定位内存地址的方法
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  问题7.9 大家来看看哪里错了  [待解决] 回复[ 10次 ]   点击[ 393次 ]  
lzs5732
[帖 主]   [ 发表时间:2008-07-16 13:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
这是目前为止写最长的了~
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1.display       '
db '2.brows         '
db '3.replace       '
db '4.modify        '
datasg ends
codesg segment
start:mov ax,stacksg
      mov ss,ax
      mov sp,0
      mov ax,datasg
      mov ds,ax
      mov si,0
      mov bx,16
      mov cx,4
s0:push cx
 s:mov ax,[bx+3+si]
   and ax,11011111b
   mov [bx+3+si],ax
   inc si
 loop s
   pop cx
   add bx,16
loop s0
codesg ends
end start
lzs5732
[第1楼]   [ 回复时间:2008-07-16 13:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
能编译,能连接~
debug跟踪后~发现只有brows中的R转为大写
另外,想问下,debug里有命令可以一次执行完程序吗?
lzs5732
[第2楼]   [ 回复时间:2008-07-16 13:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
突然想起g命令~
tomato
[第3楼]   [ 回复时间:2008-07-16 13:27 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
楼主的程序中缺少了返回操作系统的指令。
tomato
[第4楼]   [ 回复时间:2008-07-16 13:27 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
在debug下用g命令可以一次执行完程序。
lzs5732
[第5楼]   [ 回复时间:2008-07-16 13:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
晕~错漏百出啊~
应该是mov sp,16
tomato
[第6楼]   [ 回复时间:2008-07-16 13:30 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
楼主的程序还是有问题。这个程序比较简单相信楼主可以独立解决。问题出在内循环设置循环次数那一块。
lzs5732
[第7楼]   [ 回复时间:2008-07-16 14:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
我行了~
原来是si的初始化问题,每次小循环运行完,都要将si初始化
把正确的贴上来~
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display      '
db '2. brows        '
db '3. replace      '
db '4. modify       '
datasg ends
codesg segment
start:mov ax,stacksg
      mov ss,ax
      mov sp,16
      mov ax,datasg
      mov ds,ax
      mov bx,0
      mov cx,4
s0:push cx
   mov cx,4
   mov si,0
 s:mov al,[bx+3+si]
   and al,11011111b
   mov [bx+3+si],al
   inc si
 loop s
   add bx,16
   pop cx
loop s0
  mov ax,4c00h
  int 21h
codesg ends
end start
lzs5732
[第8楼]   [ 回复时间:2008-07-16 14:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-29 19:24
谢谢马铃薯的提示~
zzxjypm
[第9楼]   [ 回复时间:2008-07-23 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-03 16:13
藐視SP初值也被修改了哦,,
oldmtn
[第10楼]   [ 回复时间:2008-08-07 20:54 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2008-07-14 19:30
sp的值一看到就知道不对的!
强烈建议楼主看书仔细点

还有mov bx,16
一开始的时候bx应该是0,要不然你怎么使用add ax,16呀
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved