skylove1233 发表于 2017-10-21 11:57:16

关于向显存写数据的问题

我写了一个加法的汇编程序,要求最后结果显示到屏幕上,程序如下
assume cs:code,ds:data
data segment
db 1,2,23,3,43,34,2
data ends
code segment
start:   mov ax,data
   mov ds,ax
   mov si,0
   mov ax,0b800h
   mov es,ax
   mov di,160*13+32*2
   mov ax,7h
   call suanfa
   mov es:,al
   mov byte ptr es:,2h
   
   mov ax,4c00h
   int 21h

suanfa:mov cx,ax
         mov ax,0
s:add al,
      inc si
   loop s
   
   ret
code ends
end start
但是·不知道为什么,屏幕最后显示的是1,明明在AX寄存器里存的是6a,如图所示,麻烦帮我看下问题出在哪里?


丶忘却的年少o 发表于 2017-10-21 12:36:37

你的程序是要把data的数组加起来,然后显示出来对吧。
你这7个数加起来是108,对应的ASCII码是l(小写的L),没问题呀。要不你换几个数,加起来65,打印肯定是‘A’

兰陵月 发表于 2017-10-21 14:23:34

寄存器里是AX=0x6c00,没有错啊,不是0x006a

tosyh66 发表于 2017-10-21 14:35:03

路过
页: [1]
查看完整版本: 关于向显存写数据的问题