汇编学习第十章实验[除法溢出]
学习第十章内存溢出遇到的麻烦:不理解公式X/N=int(H/N)*10000h+[rem(H/N)*10000h+L]/N
在汇编中溢出公式计算中: 结果的高八位dx=int(H/N) 低八位ax=int([rem(H/N)*10000h+L]/N)
余数cx=rem([rem(H/N)*10000h+L]/N)
在实际计算时: 高位dx的值*10000h加上ax的值
1 assume cs:daima 2 daima segment 3 kaishi:mov ax,4240H 4 mov dx,000FH 5 mov cx,0AH 6 call divdw 7 mov ax,4c00h 8 int 21h 9 10 divdw: 11 push bx 12 push ax 13 mov ax,dx 14 mov dx,0 15 16 div cx ;计算int(H/N)*10000h 其中cx为除数16位则 则被除数为32位ax和dx,ax低八位,dx高八位,
17 mov bx,ax ;将H/n的商给bx 18 19 pop ax ;取出栈中的L, 20 div cx ;计算[rem(H/N)*10000h+L]/N 此时DX为H/n的余数0005 也就等于公式rem(H/N)*10000h,而加上低位的ax后就为该公式[rem(H/N)*10000h+L]/N 21 22 mov cx,dx 23 mov dx,bx 24 pop bx 25 ret 26 daima ends 27 end kaishi
在编写程序出现的错
1) 将;错写为;会c出现out of memory的错误
2)简答的语法规则错误,div指令要求除数和被除数不对等匹配,mul要求对等匹配位数相同

浙公网安备 33010602011771号