03 2012 档案
摘要:循环指令类似于条件转移指令,不公属于段内转移,而且也采用相对转移方式,即通过在IP上加一个地址差的方式实现转移,循环指令中也只用一个字节表示地址差,所以如果以循环指令本身作为基准,那么循环转移的范围在-126到+129之间。 循环指令不影响各标志。 (1)计数循环指令LOOP 计数循环指令格式如下:LOOP 标号 这条指令使寄存器CX的值减1,如果结果不等于0,则转到标号,否则顺序执行。 该指令类...
阅读全文
摘要:1.无条件转移指令 (1)无条件段内直接转移指令 无条件段内直接转移指令格式: JMP 标号 使控制无条件的转移到标号地址。 例: NEXT: MOV AX, CX JMP NEXT JMP OVER OVER: MOV AX, 1 在执行无条件段内转移指令时,实际操作是把指令中的地址差加到指令指针ip上,使ip内容为目标地址,从而达到转移目的。 段内无条件直接转移指令中的地址差用一个字节表示时成...
阅读全文
摘要:1.逻辑运算指令 (1)否操作指令NOT 格式:NOT OPRD 该指令把操作数OPRD取反,然后送回OPRD,OPRD可以是通用寄存器,也可是存储器操作数,对标志没有影响。 (2)与操作指令AND 格式:AND ORPD1, OPRD2 对两个操作数进行按位逻辑与运算,结果送到OPRD1。该指令执行后,CF=0,OF=0,PF,ZF,SF反应运算结果,AF未定义。 某个操作数自己与自己相与,虽然...
阅读全文
摘要:一.加减运算指令 1.加法指令ADD 格式:ADD OPRD1, OPRD2 操作:OPRD1<-OPRD1+OPRD2 加法指令影响标志位,OF位更具操作数符号变化情况来设置:若两个操作数符号相同而结果与之相反时溢出,OF=1,否则OF=0。 CF可以用来表示无符号数的溢出,最高位产生进位或借位,产生溢出,CF=1。 2.带进位的加指令ADC 格式:ADC OPRD1, OPRD2 操作:OPR...
阅读全文
摘要:一.传送指令格式:mov dst, src源操作数可以使累加器,寄存器,存储单元,立即数。目的操作数不能为立即数。注意问题:源和目的操作数不能同时是段寄存器;代码段寄存器cs不能作为目的寄存器;ip既不能作为源,也不能作为目的。源操作数与目的操作数类型要一致16对16位, 8位对8位。两个操作数不能都为存储器,必须有一寄存器。数据传送指令能实现下列传输功能:1.cpu内部寄存器间数据传送mov ah, almov dl, dhmov bp, spmov as, cs2.立即数送通用寄存器或存储单元(立即数不能直接送到段寄存器)mov al, 2mov si, –5mov varb, –1mov
阅读全文
摘要:看见一帖子面试题,求字符串中出现次数最多的字符,并获得其第一次出现的位置,题目很简单,我用一个128的数组,记录字符出现的次数,运用位图的思想解决此问题。 代码如下:#include <stdio.h>#include <string.h>#define MAX 128int bitmap[MAX];char find(int *x, char *str){ int i = 0, max ...
阅读全文
摘要:Process类有一个StartInfo属性,这个是ProcessStartInfo类.Process p = new Process();p.StartInfo.FileName = "cmd.exe"; //设定程序名p.StartInfo.UseShellExecute = false; //关闭Shell的使用p.StartInfo.RedirectStandardInput = true; //重定向标准输入p.StartInfo.RedirectStandardOutput = true; //重定向标准输出p.StartInfo.RedirectStandar
阅读全文
摘要:书中只实现了单词内部的排序而求得标记词,而并未实现单词之间的排序,所以运行结果按不符合作者预期结果,可能是作者的一个疏忽。完善后代码如下:#include <stdio.h>#include <string.h>#define WORD_MAX_LENGTH 100#define DICT_NUM 100char word[DICT_NUM][WORD_MAX_LENGTH], word_sign[DICT_NUM][WORD_MAX_LENGTH], old_word_sign[WORD_MAX_LENGTH];int count = 0;int char_cmp(c
阅读全文
摘要:读编程珠玑,得知的两种元素串翻转方法,我简单实现了下第一种是杂技翻转取模替换 1 int gcd(int i, int j) 2 { 3 while (i != j) 4 if (i > j) 5 i -= j; 6 else 7 j -= i; 8 return i; 9 }10 11 int main()12 {13 freopen("datain.txt", "r", stdin);14 int i, rotdist, n;15 char x[] = {...
阅读全文

浙公网安备 33010602011771号