求助,实验十第一题
我这样写为什么会报错?assume cs:code,ds:data,es:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov si,0
mov dh,8
mov dl,3
mov cl,2
callshow_str
mov ax,4c00h
int 21h
show_str: mov ax,0b8000h
mov es,ax;将显存段地址放入es
mov bl,dl;将列号放入bx
mov bh,0
mov di,bx; 将列号从bx移入di
mov bl,dh ; 将行号放入bx
mov bh,0
mov al,cl ;将颜色数据存al
mov cx,bx;觉得乘法太麻烦了,用加法计算
mov bx,0
hdb: add bx,160
loop hdb
mov cx,di;计算列数
mov di,0
ldb: add di,2
loop ldb
s: mov cl,ds:
mov ch,0
jcxz next
mov es:,cl;移数据到显存
mov es:.1,al;移颜色到显存
inc si
add di,2
jmp short s
next: ret
code ends
end start
编码报错说division by 0 or overflow
49922+463483 bytes symbol space free 本帖最后由 jackz007 于 2020-2-22 13:42 编辑
0b8000h ?这一句溢出了,一个 16 位的存储器显然无法保存这么大的数
show_str: mov ax,0b8000h
应该改成下面这样
show_str: mov ax,0b800h jackz007 发表于 2020-2-22 13:41
0b8000h ?这一句溢出了,一个 16 位的存储器显然无法保存这么大的数
应该改成下面 ...
谢谢谢谢, 支持
页:
[1]