javanetwork 发表于 2011-8-12 15:51:46

汇编视频25里有个错误,可能我不是第一个发现的,但是还是说一下

题目要求将ffff6H地址的内存单元的值(一个字节),乘3,放到寄存器dx中
正确的程序如下:
assume cs:mycode;假设mycode为代码段
mycode segment;定义一个段,段名为mycode
beg:;标号
   mov ax,0ffffH
   mov ds,ax
   mov bx,0006H
   mov ah,0
   mov al,
   mov dx,0
   mov cx,3
lo:add dx,ax
   loop lo
   inc bx
   mov ax,4C00H;程序返回
   int 21H
mycode ends;结束段
end beg;结束程序,同时告诉编译器,程序入口的标号是beg
视频里面说mov ah,0   mov al, 这两句是多此一举,可以改为 mov ax,
这个观点是错误的,假设ffff6的内存是这样的: F2 EB
mov ah,0
   mov al,结果ax为 00F2H
mov ax,   结果ax为EBF2H,乘3就越界了

张国祥 发表于 2011-8-12 18:47:53

视频里面说mov ah,0   mov al, 这两句是多此一举,可以改为 mov ax,

这句话的确是错的,后者以word形式传递数据,前者以byte形式传递数据

我挖 发表于 2013-7-2 22:49:06

看帖就要回帖支持下

fishmo 发表于 2013-7-2 23:18:36

看看老帖,支持下
页: [1]
查看完整版本: 汇编视频25里有个错误,可能我不是第一个发现的,但是还是说一下