实验二


org 0000
    ljmp start
org 1000

TAB: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH

start:
    mov DPTR,#start
    ;将dptr low,dptr high压栈,保存start地址,以便ret指令返回
    push dpl
    push dph

    mov A,#0EEH
    mov 20H,A

    ;置键码表TAB表首地址
    ;A为表起始地址偏移量
    mov DPTR,#TAB
    mov A,#0 

next:
    ;保存A寄存器中的值
    push acc
    movc A,@A+DPTR  ;A为TAB编码
    ;讲20H的值与A比较,如果不相等跳转
    CJNE A,20H,notequal
    ;如果相等
    pop acc
    RL A            ;得分支表内部偏移(x2,8位变16位)
    mov DPTR,#APJ   ;置分支表首地址
    JMP @A+DPTR     ;执行表跳转

notequal:
    pop acc
    inc A
    ;如果A的值为6退出循环
    CJNE A,#6,next
    SJMP $

APJ:
    AJMP PR0
    AJMP PR1
    AJMP PR2
    AJMP PR3
    AJMP PR4

;RET 返回指令,就会用刚刚压入两字节数据,当做返回地址。
PR0:
    RET
PR1:
    RET
PR2:
    RET 
PR3:
    RET 
PR4:
    RET 

end
    
#include<reg51.h>

void PR2();
void PR0();
void PR1();

void main() {
    PR2();
}

//P75-7
void PR0() {
    char i;
    //声明存储单元指针
    char *Ppos  = 0x40;
    char *Pneg  = 0x50;
    char *Pdata = 0x30;

    //声明计数变量
    char R4 = 0;    //pos
    char R5 = 0;    //neg
    char R6 = 0;    //zero

    //定义数据
    char datas[16] = {2,4,6,8,10,0,-1,-3,-5,-7,-9};


    //数据存入0x30
    //正数存入0x40,负数存入0x50

    for(i=0; i<16; i++) {
        *(Pdata++) = datas[i];

        if(datas[i]>0) {
            *(Ppos++) = datas[i];
            R4++;
        }

        if(datas[i]<0) {
            *(Pneg++) = datas[i];
            R5++;
        }

        if(datas[i]==0) {
            R6++;
        }

    }
}

//P75-9

void PR1() {
#define DATA 0X10
    char ADC=0;
    char i=0;
    char data *d = DATA;
    //定义4字节数
    *d     = 0xAA;
    *(d+1) = 0xAA;
    *(d+2) = 0xAA;
    *(d+3) = 0xAA;

    //进位标志

    //逐字节取反
    for(i=0; i<4; i++) {
        *(d+i) = ~*(d+i);
    }
    //加一
    if(*d==0xFF) {
        *d=0;
        ADC=1;
    } else {
        //加一
        (*d)++;
        //d->d+1
        d++;
    }

    for(i=1; i<4; i++) {
        //如果此字节为FF且有进位
        if(*d==0xFF&&ADC==1) {
            ADC=1;
            *d=0;
        }
        //此字节不为FF但有进位
        else if(ADC==1) {
            (*d)++;
            ADC=0;
        }
        d++;
    }

}


void PR2() {
#define BUF1 0x60
#define BUF2 0x10
#define BUF 0x00
    //定义数据
    unsigned char sets[16] = {0x05,0x0F,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
    unsigned char sum=0;
    unsigned char avg=0;
    unsigned char rem=0;
    char i;
    unsigned char xdata *dx     = BUF1;
    unsigned char data *davg    = BUF2;
    unsigned char data *drem    = BUF;

    //存储外部数据
    for(i=0; i<16; i++) {
        *dx = sets[i];
        dx++;
    }
    //恢复dx起始地址
    dx = BUF1;
    //求累加值
    for(i=0; i<16; i++) {
        sum += *dx;
        dx++;
    }

    avg = sum/16;
    rem = sum%16;

    *davg = avg;
    *drem = rem;



}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容