0% found this document useful (0 votes)
240 views131 pages

Solution Manual of Assembly Language Programming and Organization of The Ibm PC by Ytha y Yu Charles Marut

imp

Uploaded by

Abeeha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
240 views131 pages

Solution Manual of Assembly Language Programming and Organization of The Ibm PC by Ytha y Yu Charles Marut

imp

Uploaded by

Abeeha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 131
REREEAEA LEAL EDD AI APB BIIAARIAA IAA AIPA APIA IM 1 Assembly Language Programming and Organization of the IBM PC By Yu and Marut MANUAL SOLUTION CH.1 To cH.10 Written by: Eng. Muhammad Waseem BREIL A LARA D REED DEAR DARED REA IAEA AEA DAD IARI ADAA AAA PAID AED EAA Assembly Language Programming Muhammad Was PERE ER ARERR ER RAR RRA RR AR to a a a A A ERETEREOTEAT SPE LET ESET RENTER TEETER TT ETE T OTT Pe Ee ConTENTS Preface Cha Ch.2 Ch.3 Ch.4 chs Ch. Ch.7 chs Cho Ch.o Appendix A (How to runa program Appendix B ( Some useful procedure) Assembly Language Programming Muhammad Waseem PEERERERIER EREDAR READIED IAAI RB AA Be BEEP AAAI DADRA AAAA DARA DARED DADA DIA D AAAI DADA AAA APASARAA ARP AA APIA AD ; t * t t ; i z ; ; - t t t . t : ERERERELTEREOPELET SETTLE SPELT TELE EER TEEPE TLE EES Chapter One Microcomputer Systems (1) a) ) 1111111100010001b | OLOLOLOIIIIIII1 1b | 00010001 11011101b (2) a) 1101 ALAA LAAA LAD LAAN AA AAA AAA A ISAS AAAS AAAS AAA APA AAAI Assembly Language Programming Muhammad Waseem PEREREREREREREREREEEEDERERER ED RERERER ERED ED RD EDP PEER IALR AAAS DEAR ERE AREA IAEA A DARED AREA DADA DI AAA ADA A AR A AARP ADD z z : = PRTTEREOTEAT SPE LET RESET RENTER TEP EO IT TT ETE Ter Pe eg Chapter One (4) a) the microprocessor : brain of the computer , it controls the computer by executing programs stored in memory. b) the buses: connect the different component to make processor communicate with memory and I/O circuits. (5) a) EU (Execution Unit ) : execute instructions — because it contains the ALU. b) BIU (Bus Interface Unit ): facilitates communication between the EU and the memory or 1/O circuits , and useful for speed-up the processor by instruction prefetch . (6) a) /P : contains the address of the next instruction to be executed by EU. b) ALU: perform arithmetic & logic operation . LEA IAAI LARA D LEIA IRDA DRADER IDEA ADEA DARI D ABAD AAAI ARAA DADA AAPA IAD PEED RADDA DREAD RADDA AAA AAD AANA ISAS AAAI AAA ASAI AAAI AIA Assembly Language Programming Muhammad Waseem SEEEERERIERR EERE ERIE ET IRAE ARB A BA A ee TETTERERTEEERELELED ERED RENTS ER EDEL ELLE ELE ED ED Chapter One aM a) I/O ports : transfer points between the CPU & I/O devices b) because they have addresses connected to the bus system known as I/O addresses and they can only be used in input or output instruction , this allows the CPU to distinguish between them . (8) 4-Bytes * z i f z r * 2 2 * * e * e : (9) - ) t a) | Fetch an instruction from memory. | Decode the instruction to determine the operation. * z . : f i * e z : = : b) | Perform the operation if needed . | Store the results in memory, (10) a) Advantages of H.L.L: 1. closer to natural language , so it’s easier to read and understand the program . 2. assembly contains more statement than an equivalent HLL ,so It’s need more time to code the assembly language program. FA Assembly Language Programming Muhammad Waseem REEEEREREREEEERERER ERED EREREREDERER ERE ERD BR DD Be PEEEEEEEEEEEL EDEL ED EDO DREN EL ER EREDAR ELLE EDEL DER Chapter One 3. each computer has its own unique assembly language , so It’s limited to one machine ,but HLL can be executed on any machine has the compiler of that language . b) primary advantage of assembly language: It’s so close to machine language ,so it’s produce a faster shorter machine language program . And some operation (read /write) can be done on specific Memory location and I/O ports, and that may be impossible In HLL. Assembly Language Programming Muhammad Waseem LERRER REAR R EERE RARER AAAI A ee REDE A DEAD AAA D EEA DERE RARE AEEDIAAD DARI ER RIDIDAIEDAAAIAAAAD ADEA AAAI AED i * ; i t i i f : i * : i : z : i i i TETEEREE TEER ELELED ERED RENTS ESE RELIES EE ELE ED ER Chapter Two (1) Binary Decimal 1001 9 1010 10 1101 13 1100 12 1110 14 1011 ll = = - eee S| a) 14d d; decimal d) 1027628d @) a) 1100001b b: binary b) 10011100116 ©) 399h h: hexadecimal d) 17E8h (4) a) 4Bh b) 9SAEh c) 101000101100b d) 1011001101001 101b Assembly Language Programming Muhammad Waseem EEERERERIERE REAR IIE IRA A A Bee LEILA LARA D RAED ARERR ADEA AERA EDAD DRA D AAAI ARAD DADA D ARIA APIA AED PREPAID AAR AAAI AAA AAA AAAI AID PRTTEREOTT ATO PE LET EDIT RENTER TEP EO IT TT EET Eee Pe ee Chapter Two (5) a) 111100b b) 10110110110b c) CICDFh d) IFACABh (6) a) 101b b) 1001010b c) 25041h d) DOODFh (7) a) 234d = 0000000011101010b = 00Eah b) 16d = 0000000001 0000b -16d = 2’s comp. (16) = 1111111111110000b = FFFOh. ¢) 31634d = 0111101110010010b = 7B92h d) 32216d =0111110111011000b -32216d = 2’s comp.(32216) = 1000001000101000b = 8228h Note: 2’s comp. =1’s comp +1 1’s comp. =NOT Assembly Language Programming Muhammad Waseem PREREEERERREREAAR RARER A RB A BB et BEELER LIRA D ARIA DREADED ARIA ARA ED ARE AERA AARAD ARID ARAIA ADEA AIA AAD EEE I PRTTEREOTEAT SPE LET ESET RENT ELT EPL O IT TT EET ere Pe ee Chapter Two (8) Take 2’s comp. for negative number, then Add the two numbers. if no.1> no.2 : positive result stay as it. If no.1< no.2: negative take 2’s comp. a) 2’s comp. (-10010111b) = 1111111101101001b 10110100b+1111111101101001b = 0000000000011 101b Positive no. =11101b b) 2’s comp, (-1111011 1b) = 1111111100001001b 1000101 1b+1111111100001001b =1111111110010100b Negative no, =2’s comp. (1111111110010100) t 5 i t ? t t ? : * =-1101100b ; ; : t t $ i t : 3 c) 2’s comp.(-12ABh) = ED5S5h FEOFh+ EDS5Sh = EB64h Positive no. = EB64h d) 2’s comp. (-B3EAh) = 4C16h LABCh+ 4C16h = 66D2h Negative no. = 2’s comp. (66D2h) =-992Eh Note: we can judge on no. from subtraction equation (e.g.: IABCh — B3EAh = (negative number): because IABC < B3. h, so we must take AI GI Assembly Language Programming Muhammad Waseem AEEEERER SPREADS ER ER AA AAR ARTRER ERR ERR RAPE ERRATA TE LEATREREETEE TEED ERED RONEN TEER TREE ERATE EEE DER : Chapter Two t ; e * (9) t ; Unsigned: convert the number as it is. . 5 Signed :if msb=0 convert the number as it is. ; : If msb=1 take 2’s comp. then convert. : * . Unsigned signed : a) 7FFEh 32766d 32766d z b) 8543h 34115d -31421d x : c) FEh 254d -2d z : d) 7Fh 127d 127d i ; Note: msb (most significant bit) last bit on the left. zt ie: bit-15 in word OR bit-7 in byte. 3 * + t (10) t 120d = 01111000b 8-bit 000000000111 1000b 16-bit To make it negative take 2’s comp. -120d = 10001000b 8-bit 1111111110001000b 16-bit s ® g a) 10001000b z : b) 1111111110001000b z * * ©) (Aaa pana Ree Soe REaR RR ERNETRT ET RRO * s 2 : ; f i i i 2 * Assembly Language Programming Muhammad Waseem RAAESTAREEER DRE E ERAN EATER ARTE ER AR ARERR AER RR i i i f i i i | i f i i i : Assembly Language Programming PE RRERERAR RAED RRA ARAL AISA AB A ee PRTTEREOTEAT DPE LET ESET RENTER TEP EOIN TT ETE ee Pe eg Chapter Two ab 16-bit a) 32767d TILIIDATITI LD Ib b)-40000d —X :too big X :too big c) 65536d X :too big X :too big d) 257d 0000000100000001b —-X :too big e) -128 0000000010000000b — 10000000b Note : Range of unsigned integer : 0-255 for byte 8-bit 0 - 65535 for word 16-bit Range of signed numbers 128 - 127 for byte 8-bit -32768 — 32767 for word 16-bit (msb represente the sign) (12) If msb =0 positive else negative a) 1010010010010100b Negative b) 78E3h = 0111100011010011b Positive c) CB33h = 1100101 10011001 1b Negative d) 807Fh = 1000000001 111111b Negative e) 9AC4h = 1001101011000100b Negative Muhammad Waseem SRI Ee i i i i ; PRETEREOTE ETO PE LETTE DETR ERT ERT E PETIT TT TET Ere Pe ey Chapter Two (13) Address Content(hex) Data 0 4 $ 1 31 1 2 32 2 3 2E 4 aT 7 5 35 5 (4) 41 74 74 61 63 6B 2061 74 2044 61 A t t «2 « &E at Da 77 6E w n “Attack at Dawn” (15) A=4lh a=6lh The difference is 20h Add 20h to convert from upper to lower case. Assembly Language Programming Muhammad Waseem LERRER REAR R EERE RAR ALAIAADI RA RABE A DEAD ADEE SERDAR SAEED AES A ARID IDAADA AA AAAD IAEA A RAIDED FEA APTI PRETEREOTEAT OPE LETTE SITE ERT ERT E PETIT TT ETE Ere Pe eg Chapter Two numerical value = Oh numerical value = 1h The difference is 30h SUB 30h to get the numerical value. (17) Just a technique: 0123456789ABCDEF....... -> S(c) B23CDh +1791 2h ‘0 from C to the right | place 3+9= go from 3 to the right 9 places = 2+7= go from 2 to the right 7 places = B+1= go from B to the right | place = = C9CDFh Assembly Language Programming Muhammad Waseem BERRA REAR R ER ER AERA ERRATA II A ee ELE A DERI AAA EEDA EDAD ARAE AIRED ARID DARA IADAIA AAA A ARA DAA IAD z e ; * t * t * t 2 t ® * 2 * t - - z t $ t t t t t * i x z z 3 z $ > 3 3 - t i ; 2 x 3 LITTRTAEATEA TERED TREAT E REDE R ESE R EDEN E DATES AERO D ES z Chapter Three t d) z 8086 & 80286 have 16-bit but 80286 has this advances: “| Tow mode of operation. | More addressable memory. z | Virtual memory in protected mode, i ’ z Q) Registers M.L Inside CPU in RAM * Perform operation store data s Known as name known by Address : 14-reg 16-bit IMB 8-bit * . $ Note: these information for 8086. ; (3) : AX : multiplication & division operation. ; BX : serves as an address register. z CX : serves as a loop counter. : DX : used in I/O operation. i x Assembly Language Programming Muhammad Waseem BPEEDREREEEEERENEDER DEERE DRERERER ERODE REEDED RD BB PRED D EEA AREA AAI DI AAA AAA ADA A AAA AAAS ADA AIDA TAEEEEEERERER ERIE DEED EEREREL ER ERED IED ODER RR EEE Chapter Three (4) 0AS1:CD90h = seg:offset Physical address = seg x 10h +offset =0AS1 x 10h + CD90h = 0A510 + CD90h = 172A0h i . t x * 5 s * 3 - , : ; (3) ? Physical Address = 4A37Bh f a) seg. = 40FFh Physical addres i Offset = physical address — seg x 10h z =4A37B — 40FF x 10h : 4A37B — 40FFO z = 938Bh ; t z i * cal * ? . i 2 i t seg x 10h + offset 40FF:938Bh b) offset = 123Bh Physical address = seg x 10 + offset Seg x 10h = physical address — offset Seg x 10h = 4A37B — 123B Seg x 10h = 49140 Seg = 49140/10h =4914h 4914: 123Bh Assembly Language Programming Muhammad Waseem PEEERERERERERERERRERERERERERERRERERERERER ERED RDB BEEP LEI LARA AAA ADDR A ARA DARA DARDS DEED ADEA D ERAS AAAI ADA AAA A ARIA AAD TATEEEEEREREREREA DEED EEREREL EL ERED IED EDEL ERR ERE Chapter Three (6) Paragraph = 16 byte So any address accept division on 16d /10h call paragraph boundary. (i.e : any address ending in 0) Ex: 15230 : P.B P.B :Paragraph Boundary 66DAO: P.B 3ACAI: not P.B (7) The compatibility of PC clones with the IBM PC depends on how well their BIOS routines match thoses of the IBM (8) That depends on the size of RAM used. For 8086 IMB is used 10-segment to loading and running applications , these 10-segment give us 640 KB of memory. If we use 512-KB it has only 8-segment Assembly Language Programming Muhammad Waseem EEERER ERIE ERR A AAI IBID IAAI RA AA He BEEP LAA IAEA ID EAA A ERA D READ AEE AA RAA DADA A RIAD ARAID ARIA A ARIA DADA A APIA AD PARR DRADER AAAI RIAA AAA AAA AID (dy) (2) LEELA AAAS ARAN AANA AAA AANA AAAI EAA AANA AAAI Chapter Four a) legal b) legal c) illegal ; contains a blank (space) d) legal e) legal f) illegal ; contains an illegal character * g) illegal ; contains an illegal character = a) 246 ; legal — decimal b) 246h; legal —hexa c) 1001; legal — decimal d) 1,101; illegal — nondigit character , e) 2A3h; legal — hexa f) FFFEh ; illegal — must begin with digit g)OAh ; legal — hexa h) Bh ; illegal — must begin with digit i) 1110b ; legal — binary (3) a) A DW 52 b) WORD! DW ? c) B DB 25h d) Cl DB ? e) illegal , number too big can’t fit in word f) ARRAY! DW 1,2,3,4,5 Assembly Language Programming Muhammad Waseem PE RRER EAR R RAR A RRA RADAR AAI AAI A Be PRTTEREOTERT SPE LET ESET RENTER TEP LOIRE TT Tee Ere Pe ey ; . f f ¢ z f i f * t z f $ ; ; i z i z t = t 3 : i z z t z : i $ TATEEEEELEREREREA DEED EEREREE LEER ELIE DERE ERR EET Chapter Four g) BELL EQU O7h h) MSG EQU ‘THIS IS A MESSAGES” (4) Address content inning of var. 0000h 7 A 0001h BCh B 0002h 1Ah 0003h ‘HW’ c 0004h FE 0005h ‘LT’ 0006h 1; 0007h ‘oO’ a) var. A : 0000h var. B : 0OO1h var. C : 0003h b) content of byte 0002h is : 1Ah c) content of byte 0004h is : *E” d) offset address of character ‘O” is : 0007h Assembly Language Programming Muhammad Waseem EEEEEEERIERR EERE ERIE EET IRAE A BA A ee LEEALAA DLAI DEAE RARE AAR D EEE A DIAA AD ARA DARA ADA I ARID ARID A AIDA APIA AD PEE DI DA DD DADA ARAAD DARA DADA DARA SAID AAAS AAAI AAAI PRTTEREOTEAT OPE LET ESET RENT ERT EPL O IT TT EET ELT Pe ee Chapter Four (5) a) legal b) illegal ; constant to segment c) illegal : Segment to segment d) legal e) illegal ; Memory to memory f) illgal ; can’t store in constant g) illegal ; memory to memory operation h) illegal ; out of range can’t fit in 8-bit i) illegal ; momory to memory / different size MOV AX,B SUB AXA MOV A,AX b) MOV AX,A INC AX NEG AX MOV A,AX c) MOV AX,A ADD AX,B MOV C,AX Assembly Language Programming Muhammad Waseem LERRER REAR R EE ER AERA ERRATA A ee LEEPER AANA AAA AANA AAAI IY 2 EEA PRETEREOTEAT OPE LET ESET RENT ERT E PETIT TT EET ETT Pe ee Chapter Four d) MOV AX,B ADD AX,B ADD AX,B ADD AX,7 MOV BAX e) MOV AX,B SUB AX,A DEC AX MOV A,AX z z ; * * $ * * . . 5 : n : t z * q 2 i ”) : a) MOV AHI t INT 21H ; MOV DL,AL : MOV AH,2 INT * 21H ; ? s * ; 2 e * ? * * r ; - g £ Note : The cursor will move automaticly to next position after reading b) MOV AH,I INT 21H ADD AL,20H sconvert to lower case MOV _DL,AL MOV AH,2 INT 21H Assembly Language Programming Muhammad Waseem PERRIER IRIE EREDAR EIA RD AA He LEA LAID ARID AAA D RRA AREA DARA A AAAS ADAIR ADA DDAAIARADARAA AAPA AAI IA AAD PRTTEREOTTAT SPE LETT ESET RENT ERT EPL O IT TT eee LTT Pe ee Chapter Four Programming Exercises (8) Assembly Language Programming Muhammad Waseem LE RRER REAR RRA E RARER RADA AAA EIA AI A A * ? z 5 t $ t t z * : t i i t 3 ? ® z MODEL SMALL t : DATA g MSG DB 0AH,0DH,'THE SUM OF ' C1 ; i DB ?,, AND' f : fer DB ?,IS' z : SUM DB : ; CODE 3 ; Main PROC f : i MOV AX,@DATA ___ ; initialize DS : MOV DS,AX t z ; MOV AH,2 ; display ‘2° z t MOV DL," i ; INT 21H $ $ ; MOV AH,I t : INT 21H ; read 1“ digit t t MOV C1L,AL 5 store it in memory t z * t INT 21H : read 2" digit i MOV C2,AL ; store it in memory z z 3 - PRTTEREOTEA TOPE LET ESET RENTER TEER T IT TT TTT TLL Pe eg Chapter Four ADD AL,C1 ; add the two numbers SUB AL,30H 7* MOV SUM,AL ; store result in memory LEA DX,MSG ; get the start address MOV AH,9 INT 21H ; print the MSG until $ MOV AH,4CH sreturn to DOS INT 21H Main ENDP. END Main * when we add the two numbers , suppose we enter 2 and 7 SCI code are 32h and 37h respectively, after AL will contais 69h , now we have to SUB 30h to SCII code of 9 and it is 39h. Assembly Language Programming Muhammad Waseem BER REREEEER EERE RARER AAR AAAI A ee i i ; $ ; t | | ; t 3 : | 3 : t i t ; i i 3 $ PRETEREOTEA TOPE LET ESET RENT ELT EERO IT TT ETE TET Pe ee Chapter Four (9) -MODEL SMALL. -DATA MSG DB 0AH,ODH,"ENTER THREE INITIALS: $" cl DB ,0AH,ODH c2 DB ?,0AH,ODH C3 DB 28 .CODE MAIN PROC MOV AX,@DATA sinitialze DS MOV _ DS,AX * : = 3 ? * $ . 2 > * t * t * ; ¢ i : MOV AH,9 display MSG - LEA DX,MSG i INT 21H * ? ; ; $ ? ; ? . ? > t : i . 3 MOV AHI ; read & store 1“ char INT 21H MOV CI,AL INT 21H ; read & store 2™ char. MOV C2,AL INT 21H : read & store 3" char MOV C3,AL Assembly Language Programming Muhammad Waseem BARRE REAR AERA RRA RADA IEA AAAI ADA AA i t i z f : - t : z : . ¢ t i 3 PRTTEREOTEA TOPE LET ESET RENTER TEP LOIRE TET Eee Pe eg MOV MOV INT MOV MOV LEA Assembly Language Programming LERRER EERE REREAD ALAA DA Ae LEER A DEI AAAS EEA EERE RAIA AED ADEE EDAD ARID IRI ADARADAAA AAAI DAA AAD o Zz Go Chapter Four AH,2 ; display enter DL,OAH 21H DL,ODH 21H AH,9 ; display message from cl until $ DX,C1 21H AH,4CH ; return to DOS 21H Muhammad Waseem i z z z z i z z z i f ? : z = ; z z z t z z z LERERERERTLET INTEL EN ERED ESET ERE O EE TER TE TTT ere heey * ° * Chapter four z Chapter Four z f ao) t e . t t . MODEL SMALL t DATA ; * MSG DB OAH,ODH,'ENTER A HEX DIGIT: $! $ = MSG2_ DB 0AH,ODH,'IN DECIMAL IT IS 1' - | cl DB ?,'$' 3 . t 2 * t CODE t t MAIN PROC t z MOV AX,@DATA sinitialize DS - ; MOV DS,AX f t MOV AH9 display 1S‘ MSG i t LEA DX,MSG t i INT 21H t MOV AH,1 read hex digit (A — F) i INT 21H ; f SUB AL,IIH * i MOV C1,AL :store it i $ MOV AH.9 :display 2"! MSG until $ t t LEA — DX,MSG2 z t INT 21H z : ; . . > * i t : Assembly Language Programming Muhammad Waseem 5 PEEREARERERERER ERED AAEAR ARERR ARERR RRR PRETEREOTEAT OPE LET ESET RENT ERT E PETIT TT EET LTT Pe ee Chapter Four MOV AH,4CH ; return to DOS MAIN ENDP END MAIN * ASCII for A is 41h CII for 0 is 30h Difference is 11h And for B,C,D,E,F are the same Knowing that we include ‘1’ in 2" MSG Assembly Language Programming Muhammad Waseem BER REREEAERERER AERA AAAI A ee z i i z - : i : i i t : i | | i i : : * OveaoneenranenanncounseneneseesaNTEeconanapanoenneeassananensoneesaaces: * i * i i ; z = i 3 z PRTTEREOTEATDPE LETTE SEER ERT ERT E PETIT TT EET TT Pe ee Chapter Four aby -MODEL SMALL -DATA STARS DB 0AH,ODH,"*#**######','$' -CODE MAIN PROC MOV = AX,@DATA sinitialize DS MOV DS,AX LEA —_DX,STARS INT 21H ; display 10 times * INT 21H INT 21H INT 21H INT 21H INT 21H INT 21H INT 21H INT 21H INT 21H Assembly Language Programming Muhammad Waseem RENEE REAR RERER AERA REREAD RII A ee REDE RAD EAI AAD IRE A READ REEDED ARID D REID ARIA AAIAAARIAAAAD AAAI DAA IAD z e ; t t - : : t e t z t * t MOV AH9 ; prepare to display t t t * t t e t ; t * t * * * t * s t z t , * ? 2 t $ PRTTEREOTEAT OPE LETTE SEER ERT ERT E PETIT TT ETE e LTT Pe ee Chapter Four MOV AHACH sreturn to DOS INT 21H MAIN ENDP END MAIN * it will be easy after study loop statement ch.6 to replace 10 statement by the code : MOV CX,10 L: INT21H LOOP L. Assembly Language Programming Muhammad Waseem BERREREEEEREEER AERA AAAI IIR A ee LEELA EERE AANA AAA AAAI f z f t t i i 5 i ? z i i i i i i TATEEEEEEERER TREAD EEE EEREREEEE ERED ILD EDEL RRR EET Chapter Four (12) -MODEL SMALL ‘DATA STARS DB ,*#####48#' (A HODH,'$' MID DB ' ***' C1 DB? C2 DB? C3 DB ?,' ***,0AH,0DH,'S’ -CODE MAIN PROC MOV AX,@DATA ; initialize DS MOV DS,AX MOV AHI read & store 3 initials INT 21H MOV CI,AL INT 21H MOV C2,AL INT 21H MOV C3,AL MOV AH,2 CR to current line MOV DL,ODH INT 21H Assembly Language Programming Muhammad Waseem LERRER REAR RRA E RAR RARER AIA AAA AIA ADI A RABE A DEAD ARERR EARS ARID IAAED DARI AA AID AAA DARA AAAA DARPA IAAI AED : ' t i i z t z i i f ; i t ; t t ; i §) GREED ERE CARAT SSE ERE ERRAND RIDER SAD a ET TeeTy i Chapter Four 2 i : t MOV AH9 (display stars from the t + ; beginning of line that will * e 2 . ise to erase the 3 initial t ;and write over them) z LEA —_DX,STARS z z INT 21H zt INT 21H i INT 21H i INT 21H 3 INT 21H : LEA DX,MID :( display the middle » jline with initials) * INT 21H t LEA DX,STARS continue displaying stars i INT 21H zt ; INT 21H z INT 21H INT 21H INT 21H z 2 . z MOV AH,4CH ; return to DOS ‘ ‘ INT 21H - z MAIN ENDP t : END = MAIN t i i z Assembly Language Programming Muhammad Waseem : TaAERTAREEER DRE E EAR ARERR ARERR AREA TERRA ERR RR EREEEREREEREREREE IAEA AIEEE IAEA 31 Chapter Four Sample execution for question 12: El Administrator: Armer [email protected] o x Assembly Language Programming Muhammad Waseem PEER AAR IIIA IEEE IAA AA LEADER IAAI DEED ARE AERA I EEDA DAA AAAI AERA ADIRAAARIDAERDARI AAAI AAD PEDDIE ADDR AAR A DAA AAA A READ AAA AAA AAAS AAAS AAAI AAA PLETED POTERSOPELET SLE EEE DEEL ET EDEL ER TT EEE E ELE ETS Chapter Five a Assuming that the flags are initially =0 —* Content of CF SF ZF PF OF a) AX= 8000h or 071 f b) AL= 02h 10 0 0 0 c) AL= FFh o 2 08 DD d) AL= 81h c @ e) AX=712Ah BX=1ABCh 0 0 0 0 O 1 1 1 Oo 1 0 f) AL= 7Fh 0 0 0 g) AX= 8000h 1 0 1 1 1 h) AX= FFFFh 1 0 1 0 (2) cyow O — 1 cyino a) x AX= OIXX XXXX XXXX XXXX BX= OIXx XXXX XXXX XXXX + 1OXX XXXX XXXX XXXX x: could be 0 or I (i.e any number) 01 ex: AX= 7FAOh = 0111 1111 1010 0000 B 0110 00000000 1101. + DFADh =1101 1111 1010 1101 Cyimo =1 ,cyou =O Cyino XOR cyou = | XOR 0 = | = OF (signed overflow) Assembly Language Programming Muhammad Waseem RERRER REAR R ER ER AERA RRR AAII e e PEPE AAAI AAAI API z t ® t i az : z : 2 t i t : i * z * to know how we find flags value see Q2,Q3 & Q4 : i rt ge z i z : ; LETEEAANETEE AA AEEE EDEN TEER TREE EDEL ERED ETON AED ED ER, : Chapter Five t t * i b) cyou 1 O.cyime t x 4A * i = LOXX XXXX XXXX XXxx BX= : 1OXX XXXX XXXX XXXX + r . . 1OOXX XXXX XXXX XXXX r * . * * i i ; : z Ex: your 1 0 cyimo t AX=9DE4h =1000 1101 11100100 i t BX= B216h =1011 001000010 110 + z g =10011 1111 1111 1010 : = Cyinto =O ,cyout =1 t i Cyinio XOR cyou = 0 XOR 1 = | = OF (signed overflow) i t * Be seetbinscyansnanesconeneeaantneratenssnnannceaneroocaNre i f f 4 = f i ? : * + t t f i : Assembly Language Programming Muhammad Waseem : EEERERER RIAL AA AAI DAA TATEEEEELERER AREA EEE EEEREREL EL ERED IEEE REL E DERE Chapter Five (3) We'll show solution of one and the rest are the same a. ol 512Ch = 0101 0001 0010 1100 4185h = 0100 0001 1000 0101 + 92B1h = 1001 0010 1011 0001 Method 1: By taking XOR between cyinwo and cy ou Cyinto = 1 , cyou = 0 see Q2.a 1XORO=1 OF = | (signed) Cyou=CF=0 (unsigned) Second number is positive After addition the result expected is positive , but the result is negative ,so there are error occurred The error indicate by OF = 1 Content of AX signed OF _ unsigned CF a) 92Bih 1 0 b) 18DDh 0 1 c) BC97h 0 1 d) E132h 1 0 e) 74FFh 0 0 Assembly Language Programming Muhammad Waseem LER RER REAR R EE ER AERA RRA RAAT A ee i i i i i z : i i i i i i | sc : ‘irst number is positive : i : az * i i i i ; t i i i 3 3 PRETERPOLERSOPELET SLE EEE EEE E TEEPE EER TT EET ETE TEER Chapter Five (4) We'll show solution of one and the rest are the same c. borrow | 0 borrow imo msb imo bit-14 19BC) 01 1001 1011 1100 81FEh = 1000 0001 1111 1110 - 97BEh= 10001 0111 1011 1110 Method 1: By taking XOR between borrowinio ms and borrowinw bit-14 borrowinw ms» XOR borrowine bit-14 1XORO=1 OF =1 (signed) borrowinto mss = CF = 1 (unsigned) Method 2: First number is positive Second number is negative But second number is greater than first number. And 1°t—(-2") = 18' 4 2" = positive. The result is negative so an error occurred OF = | Assembly Language Programming Muhammad Waseem BER REREEEER EERE RARER ADEA IIE A ee ? i . : 2 i ; 3 ? 3 3 SAA PRETEREOTEAT SPE LETTE SET RENTER TEP ET IT TT eT ET LT Pe ee Chapter Five Content of AX signed OF _ unsigned CF a) 07BDh 0 0 b) — 6878h 1 0 ec) 97BEh 1 1 qd) O1F3h 0 1 e) 1A22h 1 0 Assembly Language Programming Muhammad Waseem RE RRER REAR R ER ER AERA AAAI IA A A REDE A AERA AD AREA REED AERA ARID AAER DARI AAAI AIAIA AAA AAAEDEAAIA AAI AAD z i i z z i ¢ t ; ; : t t i ; t t - PRETEREOTEAT DPE LETTE SET RENT ELT EEE O IT TT ETE e TT Pe ee Chapter Six (1) a) CMP AX,0 JGE END_IF MOV BX,-1 END_IF: b) CMP AL,O JNL ELSE_ MOV — AH,OFFh JMP END_IF ELSE_: MOV AHO. END_IF: OR CMP ALO JL THEN_ MOV AH,O JMP END_IF THEN_: MOV AH,OFFh END_IF: c) CMP DL,’A’ JL END_IF CMP DL,’Z’ JG END_IF MOV AH,2 ; display DL INT 21H END_IF: Assembly Language Programming Muhammad Waseem RE RREEREAER EERE RARER AI A te t t 3 ; = : t ; i z z = z i i i t 3 i : : i : : - 3 i t t i , * = t z 3 z z z ? : i 3 = TATEEEEELERER AREA DEED EEREREL EL ERED ID DEDEDE DERE Chapter Six d) CMP AX,BX JGE END_IF CMP BX,CX JGE ELSE_ MOV AX,0 sthen JMP END_IF ELSE_: MOV BX,0 END_IF: e) CMP AX,BX JL THEN_ CMP BX,CX THEN_ MOV Dx,! else JMP END_IF THEN_: MOV Dx,0 END_IF: fy CMP AX,BX JNL ELSE_ MOV AX,0 JMP END_IF ELSE_: CMP BX,CX JNL ELSE_2 Assembly Language Programming Muhammad Waseem PE RRER EERE ERATE RARER AAAI LAA ID A EERE A DEA AEA A AREA REPRE ARID A AAD ERED A RAID EDIA ADIDAS A DARA D AAI A RAIDED ty e LEAR AR AD AAA AAI AAAAA DAA AAAI TELEEREATAL ER ERER EER EEE EER ER ERLE ER ETAL EDAD IDET Chapter Six MOV BX,0 JMP END_IF ELSE_2:MOV_ CX,0 END_IF: OR CMP AX,BX JL THEN_ CMP BX,CX JL THEN_2 MOV CX,0 JMP END_IF THEN_: MOV AX,0 JMP END_IF THEN_2:MOV _ BX,0 END_IF: Assembly Language Progranu jammad Waseem SSREREEREAERER DEAD PPPERERERERERER ER ERED ER DANE LELI AAA A AAD DREAD READE AAD ARI ADRA ADEA DRED DAIS AAAI DARI DADAD AAAI AED PEP AAAI DADRA AAD ARDEA AAA AAAS AAA AA AAAI AAAI LERERERERTLER ORE ES ERED ED EEE REP P EE EER TE TES CLP Pee z Chapter Six t . i 2) : z MOV AH, read a character t f INT 21H g * CMP AL,’A’ ;AL has the letter in. ; t JE EXE_CR ; z CMP AL,'B’ z : JE EXE_LF t - sany letter else - MOV AH,4Ch return to DOS : INT 21H : JMP —_ END_CASE : ; t EXE_CR: MOV AH,2 f t MOV DL,ODh z i INT 21H t : JMP —_ END_CASE i i EXE_LF:MOV — AH,2 t 3 MOV DL,OAh z : INT 21H f : END_CASE: z : ; . . > * = z $ ; i i Assembly Language Programming Muhammad Waseem TAAERTAREEEREREE ERED AAERR ARERR AREA ERR AER RR PRETEREOTTAT OPE LETTE SITE ERT ERT E PRO ITT Te Eee ee Pe ee (3) Chapter Six a) first we find how many loops needed: (last term — first term )/ difference (148 — 1)/3 = 49 loops MOV MOV MOV Lk: ADD ADD CX,49 AX,1 first term BX,1 BX,3_ ;add the diff. between each term AX,BX Assembly Language Programming SERRE RARER ERATED AAI ID A i z : z z z LOOP LI $ z * i z 3 Muhammad Waseem i $ i ; ? i z t 2 zg ‘ i i z i $ LEREREREOTLET INTEL EN ERED ES EEE REPL ERT E RTE Tee Cee h eee : Chapter Six t t i 2 b) (first term — last term)/ difference - . (100 — 5)/5 = 19 loops : . t MOV CX,19 $ $ MOV AX,100 , : MOV _BX,100 t t $ t Li: SUB _BX,5 t i ADD AX,BX i f LOOP LI i 5 (4) ; t a) MOV CX,50 z t MOV DX,1 z t MOV AX, 1 t z LI:ADD AX,4 i t Loop LI t k t : i i . r i i i i . = . bad : s i t z Assembly Language Programming Muhammad Waseem a PEER EEAER ERE ENEREREREREER ER EMER DR ER ERR REE RA PRR LEREREREOTLER ORES EN ERED ED EEE REPL EEE E RTE Tee CLT heey z Chapter Six t e i b) MOV AH,I : INT 21H t i MOV AH,2 : t MOV _DLOAH_ enter - * INT 21H r : MOV —_—DL,ODH z z INT 21H s t MOV DL,AL z i MOV CX,80 i . DISPLAY: INT 21H t LOOP DISPLAY + i i * * 3 °) MOV CX,5 g t MOV AH,7_ 3* z Li: INT 21H t LOOP LI i . MOV DL,'X' z : MOV CX,5 : t MOV AH,2 z : L2: INT 21H t i LOOP L2 t z z * function 7 of int 21h it’s job is: t z Input character without showing it at the screen and z ; the cursor still in the fisrt position f : The ASCII of letter after reading in AL * i i 5 Assembly Language Programming Muhammad Waseem 5 FAAEREAAEEER ERE E ERED AAEAR AR AREER ARERR ARERR RR PRETEREOTEAT SPE LET ESET RENTER TEP EOIN TT eee Lee Pe ee jenter values of AX,BX and test the code by DEBUG Assembly Language Programming Muhammad Waseem PE RAER EERE REAR ARREARS AAIID A e ; ; : Chapter Six t . f (5) z z MOV AX,0 i z ;CX divident BX divisor AX quotient : z while_: * s CMP CX,BX . $ JL END_WHILE t : INC AX z zt SUB CX,BX z z JMP ——- WHILE_ fz i END_WHILE: i f ; you can test the program by DEBUG program i R —_sensesecsennenensssennnatnnsnnnnsnnnnenennsnnaneatenn : t (6) t 3 XOR —CX,CX ; 3 ; CX product BX,AX positive numbers t t LI:ADD—CX,AX z t DEC BX - $ JNZ LI : bY t ; $ : $ : i i bd ? . 2 s 2 ; i i ; PRETEREOTEAT OPE LETTE SEER ERT ERT E PETIT TT ETE e LT Pe eg Chapter Six 7) a) MOV AH,1 MOV CX,80 Ll: INT 21H CMP AL,20H : blank = 20h LOOPE LI ; always enter blank if any char. else go out b) MOV AH,1 MOV CX,80 Lk: INT 21H CMP AL,ODH LOOPNE L1 scompare will set th affect on LOOPNE e flag ZF if equal ODH and that Assembly Language Programming Muhammad Waseem BERRA REAR RERER AERA REREAD ARIA II A ee LEELA AAAI AAA AAA AEA AIEEE FIA PRETEREOTEAT SPE LETTE DETR ERT ERT EP EO IT TT EET LTT Pe ee Chapter Six Programming Exercises (8) -MODEL SMALL .CODE MAIN PROC MOV AH,2 MOV DL," INT 21H display ‘?” * * ¢ z $ 3 . *. * e 3 $ . . 4 * : ; . . 5 t z * e 3 al t z ; t t z MOV AH, 1 * INT 21H ; read 1“ char. & put it in BL + t MOV BL,AL t z INT 21H :read 2" char. in Al = Bo eee t CMP BL,AL i JG SWITCH _ ;if not orderd JMP DISPLAY ; ; t : $ z 2 * * . : e ; i : ; * rt * * = * z * z i i . e 3 3 SWITCH: XCHG AL,BL DISPLAY: MOV AH,2 MOV DL, 0AH senter INT 21H MOV DL,BL INT 21H MOV DL,AL Assembly Language Programming Muhammad Waseem BERRA REAR R EERE RARER IAI A LTTTRTDEATEAADERED ERNE ERED TREE ERED ERED ATED EERE D ES : Chapter Six t . : INT 21H * = . $ - = * t OUT_: MOV AH4CH t i INT 21H i ; MAIN ENDP : z END MAIN 2 e 2 ; t z 7 $a ac AnN moans : - = A eee nee enenaneeeeeeeeeeeneeaeeueseueseusaeescaueeueesaeeeeseeeseeerauees 2 $ t > * . * r t i ; i - 2 z . 2 3 ad * g ? * 2 . z t ; : : Assembly Language Programming Muhammad Waseem : PAAERTAREEER ERE E ERAN AAERR ARERR AREA ARRAN RR RR PRETEREOTEA TOPE LET ESET RENTER TEP EO IT TT EET Lee Pe ee Chapter Six (9) -MODEL SMALL CODE MAIN PROC BH counter (10 char per line) MOV BH,O MOV AH,2 MOV ~—CX,7FH ; 127 char. MOV DL,80H_ ;1°! letter MOV _BL,80H CONTINUE: MOV DL,BL. INT 21H DEC CX INC DL. MOV BL,DL MOV DL,20H blank space INT 21H INC BH CMP BH, 10 JE COUNT CMP CX,0 JNE CONTINUE __ jis letter finished? JMP out_ COUNT: MOV BH,O ;start again counter MOV DL,OAH senter INT 21H MOV DL,ODH INT 21H Mohammad ¢ Programming Waseem ERE ERIA RIAA RIA AAAI AAI AA LER EAIDE AAAS EEA DRED DARD ARID ADEE RAIS REDD LDI DADA ARIA DERED AAAI AAD PEI DARA R AAA LAA AAAS AAAI A AAS AAAS AAA AAA AIA bh PERE 34 F i 3 AS ae PRETEREOTEA TIPE LET ESET RENTER TEP LOIRE TET Ee Cre Pe ey Chapter Six JMP CONTINUE Out_: MOV AH,4CH INT 21H MAIN ENDP END MAIN Assembly Language Programming Muhammad Waseem LERRER REAR RRA ARATE RAIA AADAC I A i t z 3 $ : i t t z z ; = z i i : : t : : i i $ $ : z z : : i i : : i = ; 3 z PAEEEEERTEE EP ER AREAL EERE ALORS ERED ED BORED DAR ER ER 50 DADRA RAD DANA AAA DDD A AAA AAAS AS APA ATTA AD (Administrator: Amer. [email protected] or oe oe Assembly Language Programming Muhammad Waseem PEERED RADAR AAAI IAI IAA AACE LEADED DEAD ALDI ERE A ERR IAEA DIED E AREER DDD DARA DARID DRIED AIDA TAREEEEEEEREREREOE DER EERERER ES ERED EL ELEEI RARE EID Chapter Six (10) TITLE Q9:WRITTEN BY MUHAMMAD WASEEM (V.V) -MODEL SMALL STACK 64 -DATA CR EQU 0DH LF EQU 0AH MI DB CR,LF,'ENTER A HEXA DIGIT :','$' M2 DB CR,LF,'IN DECIMAL IT IS :' CIDB_ ?,'$' M3 DB_ CR,LF,'DO YOU WANT TO DO IT AGAIN ?” DB ‘Y/N’, M4 DB CR,LF,'ILLEGAL CHARACTER - ENTER * DB ‘0..90R A..F :','$' MS DB CR,LF,'IN DECIMAL IT IS :1' C2DB_ ?,'$' -CODE MAIN PROC MOV AX,@DATA sInitialize DS MOV DS,AX BEGIN: MOV AH,9 LEA DX,M1 INT 21H NEW: MOV AH,1 sread hexa digit INT 21H AEE AEE Assembly Language Programmi: Muhammad Wasi AAEEEREEEERERER ER ER ER EAR ARTATA AREER RARER RRA AP MSG: ILLEGAL: t 3 : * ; : t : : t : : i 2 : i t t ; t : Sees Language Programming Waseem PEREIRA RIAA RRA AA He Chapter Six CMP AL,'0" JL ILLEGAL CMP AL,'9' JG ILLEGAL MOV C1,AL MOV AH,9 LEA DX,M2 INT. 21H “Mov AH,9 LEA DX,M3 INT 21H MOV AH,1 INT 21H CMP AL,'Y' JE BEGIN CMP AL,'y' JE BEGIN JMP ENDD any char. else go out CMP AL,'A' JL ILLEGAL2 CMP AL, 'F’ JG ILLEGAL2 SUB AL,I1H MOV C2,AL :detictive for errors : do you want to do it again ; yes or no ; detictive for letter error MOV AH.9 Mohammad PRTTEREOTEAT OPE LET ESET RENTER TEER TIT TT EET Ere Pe ey PEI DARA R AAA LAA AAAS AAAI A AAS AAAS AAA AAA AIA LEPPEEANT ENTER EEE A NEONATE TEER ED ERED EEE DEED TR t Chapter Six z * e * * . LEA DX,M5 z - z INT 21H; zg : aon : z Sha t JMP MSG z : ae ; , ILLEGAL2: MOV AH,9 * f LEA DX,M4 f t INT 21H t z JMP NEW t t ENDD: MOV AH,4CH z * INT 21H t * x * t ; MAIN ENDP , i END MAIN i ; : + i : * * ; ; : : : ; : * ? i ? , z F Assembly Language Programming Milano Waseem ; RRRARER REDE IER REREAD AIA IAI IIIA IIIB A PRTTEREOTTA TOPE EET NESTE ERTS ET ROLE IT ET TET Er er eh Chapter Six (11) Same Q10 but we put error counter in illegal lable. TITLE Q9:WRITTEN BY MUHAMMAD WASEEM (V.V) -MODEL SMALL STACK 64 ‘DATA CR EQU 0DH LF EQU 0AH MIDB_ CR,LF,'ENTER A HEXA DIGIT :',$' M2 DB CR,LF,'IN DECIMAL IT IS :' C1DB_?,'$' M3DB_ CR,LF,'DO YOU WANT TO DO IT AGAIN ?” DB ‘Y/N',S' M4 DB CR,LF,'ILLEGAL CHARACTER — ENTER * DB ‘0.9 ORA.F :'/'$' MS DB CR,LF,'IN DECIMAL IT IS :1' C2DB_ ?,$' M6DB_ CR,LF,'ERROR THREE TIMES ENTERD’ DB ‘ILLEGAL CHAR !''$' ‘CODE MAIN PROC MOV AX,@DATA INITIALIZE DS MOY DS,AX BEGIN: MOV BL,O scounter for error MOV AH,9 LEA DX,MI aaa FA FEI EEE Assembly Language Programmi: APRETRAERERER EEE REAAEAEE EER ERERAD ERE REE R ARR E AT PLETED POLERSOPELET SLE T EE EEE LET ELE EER TT EET E TE TEER Chapter Six NEW: MOV AH,1 read hexa digit CMP AL,'0" sdetictive for errors JL ILLEGAL CMP AL,'9' JG ILLEGAL MOV C1,AL MOV AH,9 LEA DX,M2 MSG: MOV AH,9 LEA DX,M3 INT 21H MOV AH,1 sdo u want to do it again INT 21H CMP AL,'Y’ JE BEGIN CMP AL,'y' JE BEGIN JMP ENDD. ILLEGAL: CMP AL,'A’ JL ILLEGAL2 CMP AL,'F Mohammad PEI DARA R AAA LAA AAAS AAAI A AAS AAAS AAA AAA AIA LER EAIDE AAAS EEA DRED DARD ARID ADEE RAIS REDD LDI DADA ARIA DERED AAAI AAD guage Progi * bh ramming Waseem a ERE ERIA RIAA RIA AAAI AAI AA 34 35 AS ae TATEEEEERERER AREA DEED EEREREL EL ERED IED O REDE DERE Chapter Six JG ILLEGAL2 SUB AL,I1H MOV C2,AL MOV AH,9 LEA DX,M5 INT 21H ;--- ILLEGAL2: MOV AH 9 LEA DX,M4 INT 21H ; counter for 3-times illegal input INC BL CMP BL,3 JE ENDDD JMP NEW ENDDD: MOV AH,9 LEA DX,M6 INT 21H ENDD: MOV AH,4CH INT 21H MAIN ENDP END MAIN Assembly Language Programming Muhammad Waseem BERREREEEER EERE RARER AAAI IE A ee ELE AAE AAA DEED AED AEE ARR AREA ARIA AAA IAI AAAEA AAA D ADEA AAAI AED - : t e * t : i > $ - $ : : t * t * z t t * t z S s 3 : t - $ : - z t t t , * : 3 : t 3 ER EREREREEREDDRDIEII NID IITA LAI IIIA IAAI IIIB IIR Chapter Six leet ues A hirer i om cies 100 YOU WANT TI Pee oy ‘SU 32 amr LEGAL CHARACTER ~ ENTER 0..9 OR LEGAL CHARACTER - ENTER 0..9 OR ILLEGAL CHARACTER - ENTER 0..9 OR RL Ss Ce eee aye * f x k z f i k k f f k f , i > 3 2 3 3 3 IENTER A HEXA DIGIT :9 i zen) ba ROR CUR ORI ag Cai JENTER A HEXA DIGIT :c LLEGAL CHARACTER - ENTER 0..9 OR A Wnts ait eee eee Witsoe at eee eC Sees Oe ecm Sis AAA EEE EEE EEE Assembly Language Programming Muhammad Waseem POR ARR RTA ATR BeBe eR Be tt Ne Be BR Be Be Be Be Be ee Ahhh f 3 z * * * ; $ . ; $ z (1) a) 1000101 1b b) 11111001b c) 10100110b d) 10100001b a) AND b)OR c) XOR d) method I : method 2 : a) TEST b) TEST c) TEST d) TEST e) TEST LEAP ARAL AREAS AAAI AAA AAAI PRETEREOTEA TOPE LET NESE EERE ET ROR EIT ET EEE Lr ene h Assembly Language Programming Muhammad Waseem PEERER IR IER REAR IEIIEIEEIIEE IEEE ADB RA AA He Chapter Seven AX,AAAAh BL,81h DX,8000h NOT WORDI XOR WORDI,FFFFh AX,FFFFh BX,0001h DX,8000h DX,8000h BL,FFh PREPAID IRA AAA AAR AAD AAD AAA EDAD AAA AANA SASS ASIA AAA A AAAS f $ ; : i 3 + i ; f ; t t t i i t ; 3 PRETERPOTEAT OPE LET EERIE RENT RETR PETIT TT EET EL Pe Ee Chapter Seven (4) Assuming AL = 11001011b = CBh then a) AL = 10010110b = 96h b) AL = 01100101b = 65h c) AL = 00101111b = 2Fh d) AL = 01111001b = 79h e) AL = 11110010b = F2h f) AL = 10010111b = 97h g) AL = 11111001b = F9h (5) a)SHL _ B5,1 b) MOV CL,3 SHL = AL,CL c) MOV. AX,32142 MOV CL,2 SHR = AX,CL d) MOV _BX,-2145 MOV CL4 SAR BX,CL — ;SAR to keep the sign Assembly Language Programming Muhammad Waseem BER REREEEER EERE RARER AAAI IE A ee FIA PRETEREOTEAT OPE LETT ESET RENT RETR PETIT TT ETE TEL Pe EE (6) a) OR b) OR b) MOV MOV ROR Chapter Seven CL,3 AH,O AX,CL Assembly Language Programming RE RAER REAR ERATE RAR RARER AAAI IID A PRELPEPLPRPALLPAARP AAA an x e BL BL+2BL =10BL sempty AH ; remainder in AH Muhammad Waseem f ? t i : i t i z t i t : BL=8BL z i t i f t ; f t t i - PRETEREOTEET OPE LET TERETE ERT RETR PETIT TT ETE TTT Pe Ee Chapter Seven Programming Exercises (8) -MODEL SMALL ‘DATA MI DB _ 'TYPE A CHARACTER :','$' M2 DB 0AH,ODH,'THE ASCII CODE OF ' Cl DB ?,IN BINARY IS :''$' M3 DB 0AH,ODH,'THE NUMBER OF | BIT IS' C2 DB 2,$' : * - 2 * * ? * s * t * z t i .CODE - MAIN PROC ; MOV AX,@DATA Initialize DS z MOV DS,AX i MOV AH9 :prompt the user LEA DXMI z INT 21H i : ‘ i * * s * z : 3 MOV AH,1 sread character INT 21H MOV BL,AL MOV CI1,AL ;Store character MOV AH sdisplay results Assembly Language Programming Muhammad Waseem BERRER REAR R EERE RARER AAAI II A ee BEER A EERIE AAR DEED ER AAR EADEAI AERA AAD D AAI D ARIA IAA DARD AAAI AAAI DAD PRERERPOLERSOPEEET SEE EEE DEPT ET EDEL ER TT EET ELE ETS LEA DX,M2 INT 21H MOV BH,O MOV CX,8 MOV AH,2 . ; ; > t s * i Li: SHL BL,1 t ic 12 MOV DL,(0' f INT 21H ; IMP L4 12: MOV DL,'I' t INT 21H z INC BH r z z s 2 2 . . * 2 t ; t s LA: LOOP LI ADD BH,30H MOV C2,BH MOV AH 9 LEA DX,M3 INT 21H MOV AH,4CH INT 21H MAIN — ENDP END MAIN Assembly Language Program) APREEAATRERERDSERRSAA TER ERERERERED TRAE RARE Chapter Seven scounter for one’s :display content of BL count number of one’s convert to char display number of one’s sreturn to DOS Babes PEDDIE DN DRADER A DRADER A AAA DADA AS AAA SAAD AAA EEEREREREERIE ERR ED EREBR EBERLE ABABA ED REDD A 83 BINARY 15:01100010 OCU EHO LU ISUDEN i] Assembly Language Programming Muhammad Waseem PERERA ERE EAA IAI IIIA IAA AA LEILA IDEA DEAE RARE AERA I READIED ARR ERE ADEA DARA I DRADER AAAI D AAD PRED A RRA A AAA DID AAA DAA ADAAASAS IAA AAA AAA ERTTEREOTEAT SPE LET NER IET RENTER TE PETIT TT ETE CELT Ee ES Chapter Seven (9) -MODEL SMALL -DATA MI DB 0AH,ODH,'TYPE A CHARACTER :','$ M2 DB 0AH,ODH,'THE ASCII CODE OF ' Cl DB ?,' IN HEXAIS','$' * : i 3 s . 5 Ad z s . * z * . * t * i i CODE ; ; MAIN PROC - 3 MOV AX,@DATA sintialize DS z g t i zt * BEGIN: MOV AH9 :prompt user t : LEA DX.MI z INT 21h ; ; ; MOV AH, | read char, : INT 21H z t = : CMP ALDH sf CR exit z z JE OUT_ t z e t * ? MOV C1,AL store char. 3 i MOVBL,AL _:take acopy of char s t ; MOV AH -display 2" MSG $ i LEA DX,M2 i Muhammad é Assembly Language Programming Waseem : LAER E EREDAR DR EERE ARBRE ADAIR AAAI AA PRETEREOTEA TOPE LETTE DETR ERT ERT E PETIT TT EET LTT Pe eg INT 21H Chapter Seven MOV CL,4 SHRC1,CL _ :prapare for display 1 half ;* note below ADD C1,30H sconvert to char MOV DL,C1 JMP EXE1 continue: AND BL,OFH sconvert 2" half to char CMP BL,9 _ ;if>9 mean A,B,C hex ch JG ERROR_ ADD BL,30H sconvert to char. MOV DL,BL JMP EXE2 EXEI: MOV AH,2 31° half displayed INT 21H JMP continue EXE2: MOV AH,2 INT 21H :2™ half displayed JMP BEGIN ;ask if you want to do it again ERROR_:; ADDBL,37H _ convert to A,B,C... hexa ch, MOV DL,BL MOV AH,2 sdisplay it Muhammad sembly Language Programming Waseem BER EAEERA ERLE RARER RAIA AAAI A A i ; i > i i 3 z . i ; : $ : i i i 2 PEDERI DADA AAA AAA A AAAS AAAS AAAI AE EEEREREREERIEER REED EREBR ERED EB BABES EBAE RED IA A 66 INT 21H Chapter Seven JMP BEGIN 1 OU! MOV AH,4CH u I INT 21H MAIN ENDP END MAIN note : in first half we doesn’t need to compare if no. in C1 9 because it will not t Great no. could reach is 7 in But in second half all hexa digit could be shown Ex: z A o = 6F Des ee Carel Assembly Language Programming Muhammad Waseem PEE EEEAEER ERE ERR AAAI IEEE LEPPARD IAIN IEEE EAE ADAIR ADEA AERA A AAAI AED 2 ii | : : ‘ Chapter Seven : ? (10) f : : t MODEL SMALL t z DATA g z M1 DB OAH,ODH,'TYPE A HEXA NUMBER (0 - FFFF) : ','$' 2 * M2 DB 0AH,0DH,'IN BINARY IT IS : '$' * i M3 DB 0AH,ODH,'ILLEGAL HEXA DIGIT, TRY AGAIN :','$' : z CODE g i MAIN PROC : MOV AX,@DATA xintialize DS i MOV DS,AX i * MOV AH.9 ; prompts user $ t LEA DX,MI $ i INT 21H i t START — :XOR BX,BX t ; MOV CL4 f MOV AH, | i : INT 21H sread ; * WHILE_: CMP AL,ODH z 2 JE END_WHILE exit if CR 3 t CMP AL,'0' :detect for error 2 s JLERR t * CMP AL, '9' 2 : JG LETTER z z AND AL,OFH :get numerical value 3 f JMP SHIFT i Muhammad Assembly Language Programming Waseem TaeRR RARE EERE REET READ ARE EAA AAER ARAN ER RRR PRETEREOTEET OPE LET RESET RENT RETR PETIT TT EET ELT Pe ES Chapter Seven LETTER: CMPAL,'F JGERR CMP AL,'A' JL ERR SUB AL,37H _ ;get numerical value ;if not in range (A...B) error SHIFT: SHL BX,CL ; ready to enter in register OR BL,AL INT 21H JMP WHILE_ scontinue reading hexa END_WHILE:MOV AH,9 ; if finish reading LEA DX,M2 sdisplay result INT 21H MOV AH,2 SHOW: SHL BX,1 JC ONE MOV DL,'0' INT 21H JMP LOOP1 ONE: MOV DL,'I' INT 21H LOOPI: LOOP SHOW jdo it 16 times JMP OUT_ Mcnsi Assembly Language Progranu ATREEAATRERERESERRSAA AAR ERERERERED TR ERE RARE LEELA LAA RAR AAA AAA AAA AAAI AAAI > $ * * * * : * * * * ; * t ? ; * * MOV CX, 16 display content of BX i : : * * f * * * * > ‘ + t : * + EEEREREREERIEER REED EREBR EBERLE IBAA ED AED EIA A 69 Chapter Seven ERR: MOV AH,9 LEA DX,M3 1 MS¢ INT 21H JMP START OUT MOV AH,4CH INT 21H MAIN ENDP END MAIN PLB ELLER AAAS AR DARED EEED EEE era) aa Ce arms! 1111111000011106 Assembly Language Programmi Muhammad Waseem PERERA ACR RRA RRR RAR Ra a a PEPE EEE EEE EEE ETE EAE PRETEREOTEET OPE LETTE SERRE RTE ETRE SOIT TT ETE LETT Pe Ee Chapter Seven ab -MODEL SMALL -DATA MI DB OAH,ODH,'TYPE A BINARY DIGIT ,UP TO 16-BIT: ','$' M2 DB OAH,ODH,'IN HEXA IT IS :','S' -CODE MAIN PROC MOV AX,@DATA __ ;initialize DS MOV DS,AX . : i i t ; ; . 2 * i i z s . . z * . 2 i i ; ; * t = * t z 3 MOV AH,9 sprompt user : LEA DX,MI : z INT 21H i MOV AH,1 MOV CX, 16 t t i i rt i i s ; i z t ; z * t i : i ; Li: INT 21H CMP AL,ODH __ ;finish enter JE OUT_ AND AL,OI1H sconvert to numerical 0,1 SHL BX,1 ;store it in BX OR BL,AL. LOOP LI Assembly Language Programming Muhammad Waseem BER RER RIAA RAE A RAR IE AREA AEIA A D AAA e OUT_: L2: L3; i i i ; z ¢ 2 i i i i t i t i i . i i i i i LETTER: Assembly Language Programming LER RER REAR R EERE RARER AAAI II A ee Chapter Seven MOV AH,9 LEA DX,M2 INT 21H MOV DH.4 MOV CL,4 MOV DL,BH SHR DL,CL MOV AH,2 ;show 4-digit hexa CMP DL,9 :detect the digit JG LETTER ADD DL,30H INT 21H JMP L3 ADD DL,37H INT 21H ROL BX,CL DEC DH CMP DH,0 JNE L2 3if 4-digit hexa displayed exit sget second hexa digit Muhammad Waseem PRETEREOTEET OPE LET RESET RENT RETR PETIT TT ETE TTT Pe Ee f t t i t f t z t f i z t t f i : z t ; $

You might also like