首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

求好手改错

2012-11-07 
求高手改错data segmentvar1 db 0, 25, 0dh,300var2 db 12h,a4h,6bhvar3 db ABCDEFvar4 dw 1234h, 5678h

求高手改错
data segment
var1 db 0, 25, 0dh,300
var2 db 12h,a4h,6bh
var3 db 'ABCDEF'
var4 dw 1234h, 5678h
var5 dw 10h dup(?)
data ends
code segment
  assume cs:code, de:data
begin mov ax, data
  mov ds, ax
  lea si, var5
  mov bx, offset var2
  mov [si], 0abh
  mov ax, var1+2
  mov [bx], [si]
  mov var5+4, var4
  mov ah, 4ch
  int 21h
code ends
  end start


[解决办法]

Assembly code
data segmentvar1 db 0, 25, 0dh, 300    ; 300>255,超出了 db 的表示范围了var2 db 12h,0a4h,6bh    ; a4h 前应加个 0 以表示其为一数值而非标号var3 db 'ABCDEF'var4 dw 1234h, 5678hvar5 dw 10h dup(?)data endscode segment  assume cs:code, ds:data    ; de 应该是 ds 吧begin: mov ax, data    ; 标号后应有 :   mov ds, ax  lea si, var5  mov bx, offset var2  mov [si], 0abh    ; 要加上 word ptr 或类似的修饰以指明操作数的大小  mov ax, var1+2    ; mov ax, var1[2] ?  mov [bx], [si]    ; 不能直接由内存到内存的赋值,且未知操作数大小  mov var5+4, var4    ; 不能由内存到内存的直接赋值,一般可通过个通用寄存器或堆栈来转储下  mov ah, 4ch  int 21hcode ends  end begin        ; start 应该是 begin 吧,要和前面的一致 

热点排行