. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->更灵活的定位内存地址的方法
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第七章7.9问题  [待解决] 回复[ 5次 ]   点击[ 424次 ]  
yukotyou
[帖 主]   [ 发表时间:2010-04-15 14:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-26 12:10
assume cs:code,ss:stack,ds:data
stack esgment
      dw 0,0,0,0,0,0,0,0
stack ends

data segment
      db '1. display       '
      db '2. brows         '
      db '3. replace       '
      db '4. modify        '
data ends
code segment
start:         mov ax,stack
               mov ss,ax
               mov sp,16
      
               mov ax,data
               mov ds,ax
               mov bx,0
    
               mov si,0
               mov cx,4
               
s0:            push cx
               mov cx,4

s:             mov al,[bx+3+si]
               and al,11011111B
               mov [bx+3+si],al
               
               inc si
               loop s

               mov bx,16
               pop cx
               loop s0

               mov ax,4c00h
               int 21h
code ends
end start

为什么运行之后debug跟踪,发现,在程序返回的时候使用d查看了data数据段和ss数据段,发现内存中也有data数据段,是否正常?我们的对象就一个就是data段(目标段),ss段中的数据是临时的?
yukotyou
[第1楼]   [ 回复时间:2010-04-15 14:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-26 12:10
笔误,将mov si,0放入s0:中。
392271275
[第2楼]   [ 回复时间:2010-06-02 18:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-17 21:22
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,10h
        mov ax,datasg
        mov ds,ax
        mov cx,4
        mov si,0
s0:  push cx
    mov cx,4
    mov bx,3
   s1: mov al,ds:[bx+si]
    and al,11011111b
    mov ds:[bx+si],al
    inc bx
    loop s1
    add si,10h
    pop cx
    loop s0
    mov ah,4ch
    int 21h
    
codesg ends
        end start
aijian837
[第3楼]   [ 回复时间:2010-06-11 16:12 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-06-09 16:05
stack esgment 
-------
stack segment
hfreedom
[第4楼]   [ 回复时间:2010-06-24 19:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-20 18:28
mov si,0
的位置放置的地方不对,LZ这样,si在 s1第一次4循环的时候被累加到4,第二次的时候就需被累加。所以应该吧 si的赋值放在  s0循环内 s1循环外  这样每次退出s1到s0的时候 si就会重新被赋值s0
hfreedom
[第5楼]   [ 回复时间:2010-06-24 19:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-20 18:28
第二次被继续累加  上面打错字了 - -
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved