有多个段 怎么定义地址

is12 2014-02-22 10:50:23

assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0123h,0234h,0235h,2341h,1122h,3333h,233ah
data ends
stack segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends
code segment
start mov ax,10h
mov ds,ax
mov ax,4c00h
int 21h
code ends
end start

(1) 加载后 通过cs的地址怎么算出 ds和 ss的地址, 在内存中怎么初始化的 psp 跟上面有冲突没,内存中怎么排列 是否 定义了data后 内存就不会设置psp的基地址了
(2) 程序加载 程序返回 怎么解释这两个 假设程序返回前 ds的段地址是多少
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十年拱卒 2014-02-26
  • 打赏
  • 举报
回复
至少有三个错误: 1、dx作为通用寄存器,不能作为基址或变址寄存器使用; 2、mov不能直接从内存复制到内存; 3、你定义的是数据是word型,这可以通过dw看出,所以寻址的地址应该乘2

mov bx, a
mov ds, bx
mov bx, 0
mov di, 30h-2    ;a段占20H字节,b段紧跟着a段,占10H字节
mov cx, 8
s: mov ax, [bx]
mov [di], ax
sub di, 2
add bx, 2
loop s
is12 2014-02-23
  • 打赏
  • 举报
回复
实验5(6) a前8个 逆到 b

 a segment 
     dw 1,2,3,4,5,6,7,8,9,0222h,0234h,0345h,0333h,0333h,0dh,0ah
  a ends
  b segment
     dw 0,0,0,0,0,0,0,0
  b ends
有错没
mov bx,7
mov cx,8
mov dx,0

mov ax,a
mov ds,ax

s: mov ds:[dx+24],[bx] 
inc dx
add bx,-1
loop s
is12 2014-02-22
  • 打赏
  • 举报
回复
改下(3) 如果 stack 为空 sp 应该指向哪
is12 2014-02-22
  • 打赏
  • 举报
回复
补充(3) 如果 data 为空 sp 应该指向哪,

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧