汇编语言与 程序设计

Click here to load reader

Upload: selima

Post on 15-Jan-2016

106 views

Category:

Documents


0 download

DESCRIPTION

汇编语言与 程序设计. 5.1 汇编语言基础. 计算机语言包括:. 汇编语言. 机器语言. 高级语言. 面向机器的语言. 汇编语言: 用助记符表示指令 汇编语言源程序: 用 汇编语言 编写的程序 汇编 程序: 编译汇编语言源程序的程序. 程序设计与执行过程. 建立源程序 ( 文件名 .ASM ). 用编辑软件 ( 如 EDIT.EXE ). 编译成目标文件 ( 文件名 .OBJ ). 用汇编程序 ( 如 TASM.EXE ). 生成可执行文件 ( 文件名 .EXE ). 用链接程序 ( 如 TLINK.EXE ). - PowerPoint PPT Presentation

TRANSCRIPT

  • 5.1

  • (.ASM)(.OBJ) (.EXE)(EDIT.EXE)(TASM.EXE)(TLINK.EXE)(TD.EXE)

  • CPU CPU

  • CPU [] [] [] , [] [ ; ]

    MIUS: ADD AX , BX ; INC BX ; BX1

  • CPU [] [] [ ] Y EQU 100 ()Y100

  • 5.2

  • SEGMENT [] [] [] ENDS DATA SEGMENT MEM1 DB 11H , 22H MEM2 DW 1234H DATA ENDS

  • : ASSUME : [: ] DATA SEGMENT ; DATA ENDS CODE SEGMENT ; ASSUME CS: CODE , DS: DATA ; CODE ENDS

  • PROC [ NEAR / FAR ] RET ENDP RET

  • DB/DW/DD 1[] DB/DW/DD2[] []DB/DW/DDDUP ONE DB 25H 1ONE25H TWO DB 5,7 257THREE DB ? 1DATA1 DW 1234H 12,1234H

  • EQU/= 1 EQU 2 = CONSTANT EQU 10 CONSTANT10VAR EQU 30H+99H VAR30H+99H PURGE CONSTANT CONSTANTCONSTANT EQU 20 CONSTANT20DATA = 3 DATA 3DATA = 4 DATA4

  • I/O

  • 1 EAXEBXECXEDX32EAX

    432EAXEBXECXEDXEAX ADD EAXEBX EBX EAX EAX ADD EAXECX ECX EAX EAX ADD EAXEDX EDX EAX EAX

  • 2 NUMBNUMB+1AXAX NUMBNUMB+lALAX MOV DIOFFSET NUMB NUMBDI MOV AX1234H 1234HAX ADD AX[DI] AXNUMB AX ADD AX[DI+1] AXNUMB+1 AX

  • 3 ARRAY100~9ARRAY3ARRAY5ARRAY7

    AX SI MOV AX 0 AX0 MOV SI 3 3SI ADD AX ARRAY[SI] AXARRAY3 AX ADD AX ARRAY[SI+2] AXARRAY5 AX ADD AXARRAY[SI+4] AXARRAY7 AX

  • 4 32ARRAYARRAY3ARRAY5ARRAY716EAX

    32 MOV EBXOFFSET ARRAY ARRAYEBXMOV ECX3 3ECXECX MOV EAX[EBX+2*ECX] ARRAY3EAXMOV ECX5 5ECXECXADD EAX[EBX+2*ECX] ARRAY3ARRAY5 EAX MOV ECX7 7ECXECXADD EAX[EBX+2*ECX] ARRAY3+ARRAY5+ARRAY7 EAX

  • 5 BXCXBX55CX11032DX-AX

    BXCX DX-AX MOV BX 55 55BX MOV CX110 110CX MOV AXCX CX110AX MUL BX AXBX DX-AX

  • 6 16AX-100CX+9CWDAX-100DX-AX-100DX-AX-11AX-lDX

    AX-100CX+9AX DX MOV AX-100 -l00AX MOV CX9 +9CX CWD AX-100DX-AX-100 IDIV CX DX-AX-100CX+9 AX-11DX-l

  • DATA SEGMENT MEM1 DB 11H , 22H DATA ENDSCODE SEGMENT ASSUME CSCODE DSDATASTART: MOV AXDATA CODE ENDS END START

  • Program 5.1 .DOSSEG ; DOS .MODEL SMALL ; : .486 ; 80486 .STACK 300H ; :768 .DATA ; DB 16 DUP(?) ; WINDOWS:16 ; .CODE ; START: ; MOV AX, @DATA MOV DS, AX ; ; MOV AH, 4CH INT 21H ; DOS END START ;

  • IF-THEN-ELSE CASEIF-THEN-ELSE CASE

  • Program 5.3 ;x1,x2 .DOSSEG .MODEL SMALL ; : .486 80486 .STACK 300H .DATA DB 16 DUP(?) X1 DD 1000 ; X1,X2 X2 DD 2000 ; MSG1 DB "X1>X2",13,10,"$" ;

    MSG2 DB "X1

  • : 1) 2) 3)1DO-WHILE 2DO-UNTIL

  • biglittleDATA SEGMENT A DW 88,89,92,78,76,69,63,96,60,100 BIG DW ?LITTLE DW ?DATA ENDSCODE SEGMENTASSUME CSCODE DSDATASTART MOV AX , DATA MOV DS , AX MOV BX , OFFSET A MOV AX , [BX] MOV DX , AX INC BX INC BX MOV CX , 9 CXAGAIN CMP AX , [BX] JGE NEXT1 MOV AX , [BX] AXNEXT1 CMP DX , [BX] JLE NEXT2 MOV DX , [BX] DX NEXT2INC BX INC BX LOOP AGAIN MOV BIG , AX MOV LITLE , DX MOV AH , 4CH DOS INT 21H CODE ENDS END START

  • DATA SEGMENT A DB 8,9,2,7,6,5,0 0 AREA DW 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CSCODE , DSDATAMULTI PROC IMUL AL MOV AREA[SI] , AX ALAREA MOV AH , 2 MOV DL , 7 INT 21H RET MULTI ENDPSTARTMOV AX , DATA MOV DS , AX MOV BX , OFFSET A MOV SI , 0AGAIN MOV AL , [BX] AL CMP AL , 0 ; 0 JE EXIT CALL MULTI INC BX INC SI INC SI JMP AGAIN EXIT: MOV AH , 4CH INT 21H CODE ENDS END START