lyoal 发表于 2012-12-27 21:41:46

16.1 检测点 大牛帮忙看看代码这样写对不对,谢谢

16.1 检测点 大牛帮忙看看代码这样写对不对,谢谢
以下是代码:
assume cs:code
code segment
a dw 1,2,3,4,5,6,7,8
b dd 0start: mov si,0
mov cx,8

s:mov ax,a
add word ptr cs:,ax
adc word ptr cs:,0
add si,2
loop s

mov ax,4c00h
int 21h

code ends
end start

lukelqz 发表于 2012-12-27 21:41:47

完全可以哦。你已经领会到标号的精髓啦。就是一个地址而已。



经过编译器编译后,两者的代码完全一样,对于cpu来说,都是一样的。

lyoal 发表于 2012-12-27 23:53:36

lukelqz 发表于 2012-12-27 21:54 static/image/common/back.gif
完全可以哦。你已经领会到标号的精髓啦。就是一个地址而已。



听到luk这么说,俺很兴奋。多谢多谢。但是这编译后,执行后显示的怎么是乱码?还有鱼C的写的直接定址表例题,在我的WIN7本本上编译也不能过,我调示老久还是不行啊。望指点一下,再谢!
鱼C的代码 p282.asm:
assume cs:code

code segment
start:
                mov al,0eh

      call showbyte

      mov ax,4c00h
      int 21h

;子程序:
;用al传送要显示的数据

showbyte:
      jmp short show

      table db '0123456789ABCDEF'      ;字符表

show:   push bx
      push es

      mov ah,al
      shr ah,1         
      shr ah,1
      shr ah,1
      shr ah,1                            ;右移4位,ah中得到高4位的值
      and al,00001111b                ;al中为低4位的值

      mov bl,ah
      mov bh,0
      mov ah,table                ;用高4位的值作为相对于table的偏移,取得对应的字符

      mov bx,0b800h
      mov es,bx
      mov es:,ah

      mov bl,al
      mov bh,0
      mov al,table                ;用低4位的值作为相对于table的偏移,取得对应的字符
      
      mov es:,al

      pop es
      pop bx
      ret

code ends
end start
编译结果:



lukelqz 发表于 2012-12-28 13:18:08

{:2_27:}没啥问题啊。装个虚拟机吧。http://tieba.baidu.com/p/1027487547
win7搞16位的汇编,实在有点蛋疼。

lyoal 发表于 2012-12-28 17:27:37

lukelqz 发表于 2012-12-28 13:18 static/image/common/back.gif
没啥问题啊。装个虚拟机吧。http://tieba.baidu.com/p/1027487547
win7搞16位的汇编,实在有点蛋疼 ...

luke好给力,THKS VM !

lyoal 发表于 2012-12-28 20:48:40

我算是服了我的本本了,装了虚拟机,老样子。照样是编译不通过。郁闷,打击我的积极性。算了,跳过!
页: [1]
查看完整版本: 16.1 检测点 大牛帮忙看看代码这样写对不对,谢谢