资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,*,Binary Number Output,To display a number in,binary,format,a program looks at each bit in the number and sends the ASCII equivalent of a 1(31h)or a 0(30h)to the screen using the DOS single character Int 21h function 2.,The 8-bit value E6h(1110 0110)would have 31h,31h,31h,30h,30h,31h,31h,30h,Binary Number OutputTo display,1,Hex Number Output,To display the 8-bit value E6h as a,HEX,number,the ASCII codes for E(45h)and 6(36h)would be sent using Int 21h,function 2.,Hex Number OutputTo display th,2,Procedure to Display Hex Digit,Input:,AL,Clear upper 4-bits of AL(should only have values 0-F),Check AL for 0-9(CMP AL,9),(Add AL,30h if 0-9),Must be Char if above 9,(Add AL,37h if char;37h+10d=41h(A),Use Int21h,function 2 to display char(DL holds char),Procedure to Display Hex Digit,3,Procedure to Display 1 Hex Digit,Input:,AL,Out1hexproc,Andal,0fh ;only want lower 4 bits of AL,Cmpal,9 ;is 4 bit value above 9?,Jaischar,Addal,30h ;convert to ascii digit 0 to 9,Jmpprintit,Ischar:addal,37h ;convert to ascii digit A to F,Printit:Movdl,al,Movah,2,Int21h ;print it using DOS single char output,Ret,Out1hexendp,Procedure to Display 1 Hex Dig,4,Procedure for CRLF,Use Int 21h,function 2 to display ASCII values for CR(0Dh),LF(0Ah).,Pcrlfproc;print carriage return/line feed,Movdl,0Dh;carriage return,Movah,2;function#goes into AH,Int21h;print it,Movdl,0Ah;line feed,Movah,2;function#,Int21h,Ret,Pcrlfendp,Procedure for CRLFUse Int 21h,5,Irvine Library Procedures,Writeint,writes an unsigned 16-bit integer to standard output in ASCII binary,decimal,octal,or hexadecimal format.,Input,:AX=integer,BX=radix(2,8,10,or 16),Writeint_signed,writes a 16-bit integer to standard output in signed decimal ASCII format.,Input,:AX=integer.,Irvine Library ProceduresWrite,6,Irvine Library Procedures,Writelong,-writes an unsigned 32-bit integer to standard output in ASCII binary,decimal,octal,or hexadecimal format.,Input,:EAX=integer,BX=radix(2,8,10,or 16),Writebcd,writes an 8-bit binary coded decimal byte to standard output.Input:AL=byte.,Crlf,Writes a carriage return and line feed to standard output.,Irvine Library ProceduresWrite,7,Irvine Library Procedures,Clrscr,Clears the screen and locates the cursor at the upper left corner.No input.Works only on video page 0,and only in text mode.,Writestring,Writes a null terminated string to standard output.Input:DX points to the string.,Readint,Reads a signed ASCII decimal string from standard input and stores it as a 16-bit binary integer.Input:none.Output:AX contains the value.,Irvine Library ProceduresClrsc,8,Changing Model Size,Using a small model size requires that procedures must be within the code segment(within 256 bytes).Therefore only the offset address is needed in the call instruction.,Using a Medium model size allows larger differences in placement of procedures.Therefore the value of CS must also be saved when going to the procedure.CS and IP are both pushed onto the stack.,Changing Model SizeUsing a sma,9,Lab6A-Question C,Writing 16 different characters(0-F)as a most significant digit and 16 different characters as a least significant digit results in a total of 256 different values.Want to have two loops with the inner loop changing the LSD and the outer loop changing the MSD.Can use a shr instruction to get upper 4 bits into lower 4 bits.,Lab6A-Question CWriting 16 di,10,Lab 6B Using Irvine Library Procedures to Display Integers in Different Bases,Writeint uses BX to determine desired radix.,BX=2;display in binary,BX=8;display in octal,BX=10;display in decimal,BX=16;display in hex,AX=integer,Writeint_signed displays signed 16-bit value as a signed decimal ASCII format.,Lab 6B Using Irvine Library,11,More on Lab6B Irvine Libraries,Note that with Writestring,strings can finally be null-terminated.(much more common than DOS$),What is maximum value that can be represented with 16 bits using 2s complement format(2,16,=?),More on Lab6B Irvine Librari,12,More on Lab6B Irvine Libraries,What directive is needed to access the Irvine libraries?,Extrn Clrscr:proc,Crlf:proc,Readint:proc,When linking must have complete path of irvine libraries unless the irvine.lib is the current directory.,More on Lab6B Irvine Librari,13,Unsigned Decimal Number Output,To display the 8-bit value E6h as an unsigned decimal number,first a conversion must occur.,E6h=(14*16)+6=230(decimal),The ASCII codes for 2(32h),3(33h),0(30h)would be sent using Int21h,function 2.,Unsigned Decimal Number Output,14,Signed Decimal Number Output,To display the 8-bit value E6h as a signed decimal number(2s complement representation),first a conversion must occur.,E6h=11100110b=-1Ah=-26(decimal),The ASCII codes for-(2Dh),2(32h),6(36h),would be sent using Int21h,function 2.,Signed Decimal Number OutputTo,15,Lab6C Number Input,Uses Irvine library procedure to Writestring to output.,Uses Readstring to read in data as a string,Readstring,Reads a string of characters from standard output and stores them in a null terminated string.,Input:,DX=string pointer.CX=maximum string count.,Output:,AX=number of characters typed.,Lab6C Number InputUses Irvin,16,Lab 6C-What to do?,Call to dec2hex has BX pointing to ASCII string.Expects converted results in AX.,Each string is 2 bytes long(excluding null char).First byte is ASCII representation of MSD.Second byte is LSD.,Lab 6C-What to do?Call to dec,17,Procedure for Lab6C-Question 4,Subtract 30h to convert from ASCII to decimal.,Multiply by 10.,Save value,Put LSD in AL.Subtract 30h to convert,Add value to 10s value.,Procedure for Lab6C-Question 4,18,
展开阅读全文