汇编代码(1)

来源:互联网 发布:天猫推荐算法大赛代码 编辑:程序博客网 时间:2024/06/10 15:22
;将数据段内的字母改成大写.MODEL SMALL.STACK 100H.DATADB'ibm     'DB'win     'DB'len     'DB'hua     '.CODEMAINPROCFARMOV AX,@DATAMOV DS,AXMOVSI,0000HMOV CX,0003HMOV BX,0000HMOV DX,0004HJ:MOV AL,[BX+SI]AND AL,11011111BMOV [BX+SI],ALINC SILOOP JADD BX,0008HMOV CX,0003HMOV SI,0000HDEC DXJNZ JMOV AH,4CHINT 21HMAINENDPENDMAIN


DOSSEG.MODELSMALL; 设定8086汇编程序使用Small model.8086; 设定采用8086汇编指令集; 8255芯片端口地址 (Port number)分配:PortAEQU90H; Port A's port number in I/O spacePortBEQU 92H; Port B's port number in I/O spacePortCEQU 94H; Port C's port number in I/O spaceCtrlPTEQU 96H; 8255 Control Register's port number in I/O spacePatch_ProtuesEQUIN AL, 0;Simulation Patch for Proteus, please ignore this line.data; 定义数据段;DelayShortdw200SEGTAB  DB 3FH; 7-Segment Tube, 共阴极类型的7段数码管示意图DB 06H;DB 5BH;            a a aDB 4FH;         f         bDB 66H;         f         bDB 6DH;         f         bDB 7DH;            g g g DB 07H;         e         cDB 7FH;         e         cDB 6FH;         e         c        DB 77H;            d d d     h h hDB 7CH; ----------------------------------DB 39H;       b7 b6 b5 b4 b3 b2 b1 b0DB 5EH;       DP  g  f  e  d  c  b  aDB 79H;DB 71H;.code; Code segment definition.startup; 定义汇编程序执行入口点;------------------------------------------------------------------------Patch_Protues; Simulation Patch for Proteus,; Please ignore the above code line.;------------------------------------------------------------------------MOV AH,10001001B;设置控制状态为C输入,AB输出(控制字不改变)SUB AL,ALOUT CtrlPT,AXL:;开关处于ON为0,处于OFF为1IN AX,PortC;读入开关状态NOT AX;转换为合适的状态MOV AL,AH;将需要的数据从AH移动到AL;沿用上一题代码的形式MOV BL,ALAND BL,11110000B;获取高四位数据SUB BH,BHMOV CL,4;8086指令中只支持ROR BL,1或者ROR BL,CL格式ROR BX,CLMOV SI,OFFSET SEGTABSUB BH,BHADD SI,BXMOV AH,[SI]MOV DH,AH;DH中存储着输入数据高四位对应的显示SUB BL,BL;BL清零MOV BL,ALAND BL,00001111BMOV DI,OFFSET SEGTABSUB BH,BHADD DI,BXMOV DL,[DI];DL 中存储着输入数据低4位对应的显示AND AL,11110000BMOV BH,AL;BH中存储着输入8位数据的高四位状态;第四位和第二位显示MOV AH,BHADD AH,00001010BOUT PortA,AXMOV AH,DHOUT PortB,AXCALL DELAY;第三位和第一位显示MOV AH,BHADD AH,00000101BOUT PortA,AXMOV AH,DLOUT PortB,AXCALL DELAYJMP LRETDELAY PROC    PUSH CX    MOV CX,DelayShortD1: LOOP D1    POP CX    RETDELAY ENDP.stack 100h; 定义256字节容量的堆栈END;指示汇编程序结束编译


;将welcome to masm!复制到相邻的内存空间中assume: ds:data,cs:codedata segmentdb 'welcome to masm!'db '                'data endscode segmentstart:mov ax,datamov ds,axmov si,0mov di,16mov cx,16j:mov al,[si]mov [di],alinc siinc diloop jmov ah,4chint 21hcode endsend start



0 0
原创粉丝点击