怎样定义两个代码段,并且从一个代码段跳到两个代码段

cyberkit 2007-10-05 11:15:01

; 数据段
DSEG SEGMENT ;定义数据段
;TO DO:数据添加到下面
;//////////////////////////////////////////////////////////////
mystring1 db "funck your mother$"

DSEG ENDS


; 堆栈段
SSEG SEGMENT STACK ;定义堆栈段

DB 100H DUP(?) ;设置堆栈段大小为100H

SSEG ENDS

; 代码段
CSEG SEGMENT ;定义代码段

ASSUME CS:CSEG, DS:DSEG, SS:SSEG ;关联段寄存器

START: ;主程序入口点
;TO DO:添加主程序代码
; ------------------------------------------------------
mov ax, dseg
mov ds, ax
mov ax, sseg
mov ss, ax
;lea dx, mystring1
;mov ah, 9
;int 21h

jmp far ptr tt

;-------------------------------------------------------
; 退出 DOS
MOV AX, 4C00H ;返回DOS系统
INT 21H

CSEG ENDS

myseg segment

tt:
mov ax,1
myseg ends

END START ; 程序结束

以上代码不能编译,不知道哪里有错

还有一个问题,如果我知道一个地址123:123,怎样jmp到这个地址
masm里面,好像只能 jmp 一个标签,还有jmp寄存器,这样的逻辑地址怎么jmp啊?
...全文
292 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyberkit 2007-10-05
  • 打赏
  • 举报
回复
jmp dword ptr ds:[0]

这样也行
cyberkit 2007-10-05
  • 打赏
  • 举报
回复
jmp far ptr ds:[0]

这样的格式编译不行啊,为什么
cyberkit 2007-10-05
  • 打赏
  • 举报
回复
谢谢两位兄弟
王鲲彩 2007-10-05
  • 打赏
  • 举报
回复
; 数据段
DSEG SEGMENT ;定义数据段
;TO DO:数据添加到下面
;//////////////////////////////////////////////////////////////
mystring1 db "funck your mother$"

DSEG ENDS


; 堆栈段
SSEG SEGMENT STACK ;定义堆栈段

DB 100H DUP(?) ;设置堆栈段大小为100H

SSEG ENDS

; 代码段
CSEG SEGMENT ;定义代码段

ASSUME CS:CSEG, DS:DSEG, SS:SSEG ;关联段寄存器

START: ;主程序入口点
;TO DO:添加主程序代码
; ------------------------------------------------------
mov ax, dseg
mov ds, ax
mov ax, sseg
mov ss, ax
;lea dx, mystring1
;mov ah, 9
;int 21h

jmp far ptr tt

;-------------------------------------------------------
; 退出 DOS
MOV AX, 4C00H ;返回DOS系统
INT 21H

CSEG ENDS

myseg segment

assume cs:myseg ;注意:加这句

tt:
mov ax,1
myseg ends

END START ; 程序结束
cyberkit 2007-10-05
  • 打赏
  • 举报
回复
我上面的代码为什么编译不了啊 ???
dcg_0_0 2007-10-05
  • 打赏
  • 举报
回复
1, 如果我知道一个地址123:123,怎样jmp到这个地址 masm里面,好像只能 jmp 一个标签,还有jmp寄存器,这样的逻辑地址怎么jmp啊?
方法很多,随便一种:
把123放入ds:[0],和ds:[2],ds[0]放偏移,ds[2]放段地址
jmp far ptr ds:[0] 或 jmp dword ptr ds:[0]
当然也可以用call 指令完成.

2并且从一个代码段跳到两个代码段
问题有些..呵呵.代码嘛,就是cs,ip指向的数据就是代码,你想跳到其他地方执行,那就用call指令,jmp指令等等,cs,ip跳到哪里 哪里就是代码呵呵

期望楼主多看看汇编基础原理^_^
汇编语言学习支持网 www.asmedu.net

21,459

社区成员

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

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