+ -
当前位置:首页 → 问答吧 → 编写求n阶乘 要求放在16位寄存器里 出来什么cpu无效指令

编写求n阶乘 要求放在16位寄存器里 出来什么cpu无效指令

时间:2011-01-12

来源:互联网

dseg segment
str db'AX overflow',0dh,0ah,'$'
dseg ends
cseg segment
assume ds:dseg,cs:cseg
start:mov ax,1
int 21h
mov cx,ax
mula:mul cx
jc sh
loopne mula
mov dx,cx
mov ax,2
int 21h
mov ax,4ch
int 21h
sh:mov ax,dseg
mov ds,ax
lea dx,str
mov ah,09h
int 21h
mov ah,4ch
int 21h
cseg ends
end start

出来什么无效指令 cs: ip:什么的为什么啊..

作者: scmod   发布时间: 2011-01-12

data segment
  str db'AX overflow',0dh,0ah,'$'
data ends

stack segment
  ;input stack segment code here
stack ends

code segment
  assume cs:code,ds:data,ss:stack
start:
int 21h
mov cx,ax
mula:mul cx
jc sh
loopne mula
mov dx,cx
mov ax,2
int 21h
mov ax,4ch
int 21h
sh:mov ax,data
mov ds,ax
lea dx,str
mov ah,09h
int 21h
mov ah,4ch
int 21h

code ends
end start

改成这样试试。
你没有把DS赋值。

作者: ydfivy   发布时间: 2011-01-12

mov ax,1 ;ah=0
int 21h
应该是:
mov ah,1 ;
int 21h

作者: masmaster   发布时间: 2011-01-12

作者: masmaster   发布时间: 2011-01-12

ax是ah打错了但是貌似还有问题

作者: scmod   发布时间: 2011-01-12

dseg segment
str db'AX overflow',0dh,0ah,'$'
dseg ends
cseg segment
assume ds:dseg,cs:cseg
start:mov ax,dseg
mov ds,ax
mov ah,1
int 21h
mov cx,ax
mula:mul cx
jc sh
loopne mula
mov dx,cx
mov ax,2
int 21h
mov ax,4ch
int 21h
sh:mov ax,dseg
mov ds,ax
lea dx,str
mov ah,09h
int 21h
mov ah,4ch
int 21h
cseg ends
end start

作者: BAYNPU   发布时间: 2011-01-12

帮顶~ 嘿嘿!

作者: znxllyuan   发布时间: 2011-01-12

话说3楼的看不懂....
我想知道为什么不过输入什么数字输出怎么都是AX overflow..
书上貌似说如果是AX乘时候CF=1管的是DX
AL乘的话CF=1管的是AH
我这样貌似管的就是AH
但是我前面是拿CX跟AX乘的啊..
照理说应该是DX中有数字才会让CF=1才会出来这句AX overflow
奇怪啊啊啊啊

作者: scmod   发布时间: 2011-01-12