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