注册 登录
编程论坛 汇编论坛

求鸡毛,求有容

zhu224039 发布于 2012-11-21 19:49, 419 次点击
date segment
mm db 08Bh,0E5h,055h,08Bh,0ECh,083h,0ECh,0Ch,0B8h
   db 063h,06Fh,06Dh,06Dh,06Dh,06Dh,06Fh,063h,089h
   db 045h,0F4h,0B8h,061h,06Eh,064h,02Eh,089h,045h
   db 0F8h,0B8h,063h,06Fh,06Dh,022h,089h,045h,0FCh
   db 033h,0D2h,088h,055h,0FFh,08Dh,045h,0F4h
   db 050h,0B8h,024h,098h,01h,078h,0FFh,0D0h
xx dw 2 dup(?)
date ends
code segment
     assume cs:code,ds:date
start:  mov ax,date
       mov ds,ax
       mov cx,offset xx-offset mm
       mov si,offset mm
       mov ax,0000h
       mov es,ax
       mov di,0200h
       cld
       rep movsb
       mov bx,offset xx
       mov word ptr [bx],0200h
       mov word ptr [bx+2],0
       jmp dword ptr [bx]
      
       mov ah,4ch
       int 21h
code ends
   end start

求解这个出错 信息说的是哪个地方指令无效 谢谢

[ 本帖最后由 zhu224039 于 2012-11-21 22:26 编辑 ]
8 回复
#2
zklhp2012-11-21 21:37
错误信息是啥啊
#3
青春无限2012-11-21 22:16
看看
#4
zhu2240392012-11-21 22:27
回复 2楼 zklhp
指令出错
#5
有容就大2012-11-21 22:28
1. length指令对包含dup()指令的数据段能返回相应的分配长度 其他的只能返回1
    你那个mov cx,length mm相当于 mov cx, 1吧 。
2. 即使把mov cx, length mm 改成一个正确的长度 比如mov cx, 52
    但是被调用的中断内容中必须有返回主调函数的命令 如 mov ax, 4c00h  int 21h
     而这个语句的反汇编16进制代码是B8 00 4C CD 21 你mm后面那一大段没这个东西
    可能是你随便写的东西吧 不构成一个被调函数 修改中断向量表后 用它来填充中断内容
    能不出错?
3. 你的意图是什么?在一个中断里写乱码?不懂这些哦



[ 本帖最后由 有容就大 于 2012-11-21 23:04 编辑 ]
#6
zhu2240392012-11-21 22:50
嘿嘿 你说的问题我早改过来了
mov cx,offset xx-offset mm  就可以了

上面的是一段机器码  不过检验了 是错的
呵呵
就是直接写机器码到制定的内存中去
然后设置程序入口 转到那去执行的意思
#7
有容就大2012-11-21 22:51
回复 6楼 zhu224039
没怎么研究这个...
#8
有容就大2012-11-21 23:24
你试试这个 可以哦
程序代码:
;#Mode=DOS
assume cs:code
code segment
;mm db 08Bh,0E5h,055h,08Bh,0ECh,083h,0ECh,0Ch,0B8h
;
   db 063h,06Fh,06Dh,06Dh,06Dh,06Dh,06Fh,063h,089h
;
   db 045h,0F4h,0B8h,061h,06Eh,064h,02Eh,089h,045h
;
   db 0F8h,0B8h,063h,06Fh,06Dh,022h,089h,045h,0FCh
;
   db 033h,0D2h,088h,055h,0FFh,08Dh,045h,0F4h
;
   db 050h,0B8h,024h,098h,01h,078h,0FFh,0D0h
mm  db 0b4h, 01h, 0cdh, 21h, 0b4h, 01h, 0cdh, 21h, 0b8h, 00h, 4ch, 0cdh, 21h
xx dw 2 dup(?)

start:  mov ax,cs
       mov ds,ax
       mov cx, offset xx-offset mm
       mov si,offset mm
       mov ax,0000h
       mov es,ax
       mov di,0200h
       cld
       rep movsb
       mov bx,offset xx
       mov word ptr [bx],0200h
       mov word ptr [bx+2],0
       call dword ptr [bx]
     

       mov ah, 01h
       int 21h
       mov ah,4ch
       int 21h
code ends
   end start

#9
wp2319572012-11-22 12:15
传说中的硬编码???
1