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

求高手改错,该如何处理

2013-01-25 
求高手改错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

[解决办法]

data segment
var1 db 0, 25, 0dh, 300; 300>255,超出了 db 的表示范围了
var2 db 12h,0a4h,6bh; a4h 前应加个 0 以表示其为一数值而非标号
var3 db 'ABCDEF'
var4 dw 1234h, 5678h
var5 dw 10h dup(?)
data ends
code 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 21h
code ends
  end begin; start 应该是 begin 吧,要和前面的一致

热点排行