文章分类 -  汇编

摘要:assume cs:codecode segmentstart: mov ax,offset do mov si,ax mov ax,cs mov ds,ax mov ax,0 mov es,ax mov di,200h mov cx,offset doend-offset do cld rep movsb mov word ptr es:[0],200h mov word ptr es:[2],0 mov ax,4c00h int 21hdo: jmp short dostart... 阅读全文
posted @ 2013-02-23 22:33 Bug Man 阅读(116) 评论(0) 推荐(0)
摘要:8进制表示0 ~ 255 一共256个数 补码表示256个数 其中除正负零外可以表示255个有符号位处理器内部以补码表示有符号数,8个二进制位能够表达的整数范围是:+127 ~ -128,16位表达的范围是:+32767 ~ -32768.如果运算结果超出了这个范围,就是产生了溢出,有溢出,说明有符号数的运算结果不正确例如: 3AH + 7CH=B6H,就是58 + 124=182,已经超出-128 ~ 127范围,产生溢出,所以OF = 1;另一方面,补码B6H表达真值是-74,显然运算结果也不正确。 溢出标志OF和进位标志CF是两个意义不同的标志.进位标志表示无符号数运算结果是否超出范围, 阅读全文
posted @ 2013-02-23 02:54 Bug Man 阅读(1205) 评论(0) 推荐(0)
摘要:对前面学习知识的总结,学习了ACSII转换方法, 十进制ASCII=十进制数码+30H 1 assume cs:code,ds:data,ss:stack 2 data segment 3 db '1975','1976','1977','1978','1979','1980','1981','1982' 4 db '1983','1984','1985','1986','1987',&# 阅读全文
posted @ 2013-02-23 02:09 Bug Man 阅读(150) 评论(0) 推荐(0)
摘要:学习第十章内存溢出遇到的麻烦:不理解公式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... 阅读全文
posted @ 2013-02-21 04:22 Bug Man 阅读(218) 评论(0) 推荐(0)