




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1章 緒論1.2 用8位二進(jìn)制碼,寫出下列十進(jìn)制數(shù)的原碼和補(bǔ)碼表示解釋:原碼:最高位為符號位,正數(shù)符號位為0,負(fù)數(shù)符號位為1。補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼:由其原碼除符號位保持不變外,其余各位按位取反,末位加1而成。解:(1) +65原 = 0100 0001B 注:65 = 64 + 1 +65補(bǔ) = +65原 = 0100 0001B 注:正數(shù)補(bǔ)碼與原碼相同(2) +115原 = 0111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 +115補(bǔ) = +115原 = 0111 0011B 注:正數(shù)補(bǔ)碼與原碼相同(3) -65原 = 1100 0001B 注
2、:65 = 64 + 1 -65補(bǔ) = 1011 1110B + 1B = 1011 1111B 注:除符號位外,按位取反,末位加1(4) -115原 = 1111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 -115補(bǔ) = 1000 1100B + 1B = 1000 1101B 注:除符號位外,按位取反,末位加11.3 用16位二進(jìn)制碼,寫出下列十進(jìn)制數(shù)的原碼和補(bǔ)碼表示。(1) +120原 = 0000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 +120補(bǔ) = +120原 = 0000 0000 0111 1000B 注:正
3、數(shù)補(bǔ)碼與原碼相同(2) -120原 = 1000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 -120補(bǔ) = 1111 1111 1000 0111B + 1B = 1111 1111 1000 1000B 注:除符號位外,按位取反,末位加1(3) +230原 = 0000 0000 1110 0110B 注:230 = 128 + 64 + 32 + 4 + 2 +230補(bǔ) = 0000 0000 1110 0110B 注:正數(shù)補(bǔ)碼與原碼相同(4) -230原 = 1000 0000 1110 0110B 注:230 = 128 + 64 + 32 +
4、4 + 2 -230補(bǔ) = 1111 1111 0001 1001B + 1B = 1111 1111 0001 1010B 注:除符號位外,按位取反,末位加11.4 寫出下列用補(bǔ)碼表示的二進(jìn)制數(shù)的真值。解釋:正數(shù)的補(bǔ)碼 = 原碼負(fù)數(shù)的補(bǔ)碼:再次求補(bǔ)碼得到其原碼解:(1) 0011 0111 正數(shù)的補(bǔ)碼 真值:32 + 16 + 4 + 2 + 1 = +55(2) 0101 1001 正數(shù)的補(bǔ)碼 真值:64 + 16 + 8 + 1 = +89(3) 1000 1101 負(fù)數(shù)的補(bǔ)碼 真值:1111 0010B + 1B = 1111 0011B = -115(4) 1111 1001 負(fù)數(shù)的
5、補(bǔ)碼 真值:1000 0110B + 1B = 1000 0111B = -7第2章 Intel 8086微處理器2.2 在存儲器中存放的數(shù)據(jù)如圖所示。試讀出75422H和75424H字節(jié)單元的內(nèi)容是什么?讀出75422H和75424H字單元的內(nèi)容是什么?存儲器7542 0H13H1H78H2H9CH3H24H4H5DH5HE6H解:75422H字節(jié)單元的內(nèi)容:9CH75424H字節(jié)單元的內(nèi)容:5DH75422H字單元的內(nèi)容:249CH75424H字單元的內(nèi)容:0E65DH2.3 段地址和偏移地址為1000H:117AH的存儲單元的物理地址是什么?而1109H:00EAH或1025H:0F2A
6、H的存儲單元的物理地址又是什么?這說明了什么問題?解釋:物理地址 = 段地址 × 10H + 偏移地址解:1000H : 117AH存儲單元的物理地址1000H × 10H + 117AH = 1117AH1109H : 00EAH存儲單元的物理地址1109H × 10H + 00EAH = 1117AH1025H : 0F2AH存儲單元的物理地址1025H × 10H + 0F2AH = 1117AH說明:不同的段地址不同的偏移地址可以指向同一個(gè)物理地址,即各個(gè)邏輯段可以相互重疊。2.4 在存儲器分段結(jié)構(gòu)中,每個(gè)段區(qū)最大可占用多少地址范圍,為什么?如果
7、在8086的機(jī)器中,若段間不允許重疊,那么最多可分多少個(gè)段區(qū)?解:若為8086微處理器,每個(gè)段區(qū)最大可占用64KB,因?yàn)樗袃?nèi)部寄存器都只有16位。若每段64KB,最多可分16個(gè)段區(qū),因?yàn)?086微處理器有20條地址線,可訪問存儲器的最大容量為1MB。2.5 如果從存儲器的2000H地址開始分配段區(qū),要求數(shù)據(jù)段占用1KB范圍,堆棧段占用512B范圍,代碼段占用8KB范圍。按數(shù)據(jù)段、堆棧段和代碼段的順序連續(xù)存放,試畫出存儲器分段地址分配示意圖,圖中應(yīng)寫明各段寄存器的內(nèi)容?解:02000H1KBDS:020002400H512BSS:0240H02600H8KBCS:0260H注:1KB:00 0
8、000 0000B11 1111 1111BSS:起始物理地址2000H + 1KB = 2000H + 400H = 02400H512B:0 0000 0000B1 1111 1111BCS:起始物理地址2400H + 512B = 2400H + 200H = 02600H2.6 指出下列指令的源和目標(biāo)操作數(shù)的尋址方式:題號指令目的操作數(shù)的尋址方式源操作數(shù)的尋址方式(1)MOV ARRAY,BX直接尋址寄存器尋址(2)ADC CX,ALPHABXSI寄存器尋址帶位移的基址變址尋址(3)AND GAMMADI,11011000B帶位移的變址尋址立即尋址(4)INC BL寄存器尋址(5)TE
9、ST ES:SI,DX寄存器間接尋址寄存器尋址(6)SBB SI,BP寄存器尋址寄存器間接尋址2.7 現(xiàn)有DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各指令執(zhí)行完后AX寄存器的內(nèi)容。題號指令A(yù)X寄存器的內(nèi)容簡單解釋(1)MOV AX,1200H1200H立即數(shù)賦給AX(2)MOV AX,BX0100H寄存器BX值賦給AX(3)MOV AX,1200H4C2AHPA=DS
10、×16+1200H=21200H(4)MOV AX,BX3412HPA=DS×16+BX=20100H(5)MOV AX,1100HBX4C2AHPA=DS×16+BX+1100H=21200H(6)MOV AX,BXSI7856HPA=DS×16+BX+SI=20102H(7)MOV AX,1100HBXSI65B7HPA=DS×16+BX+SI+1100H=21202H2.8 假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,數(shù)據(jù)段中變量名VAL的偏移地址值為0050H,試指出下
11、面源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?題號指令源操作數(shù)的尋址方式源操作數(shù)的物理地址(1)MOV AX, 00ABH立即尋址在代碼段中,與CS、IP有關(guān)(2)MOV AX,BX寄存器尋址在寄存器中(3)MOV AX,100H直接尋址DS×16+100H=20100H(4)MOV AX,BX寄存器間接尋址DS×16+BX=20100H(5)MOV AX,BP寄存器間接尋址SS×16+BP =15010H(6)MOV AX,BX+10帶位移的基址尋址DS×16+BX +10=2010AH(7)MOV AX,BXSI基址變址尋址DS×16
12、+BX +SI=201A0H(8)MOV AX,VAL直接尋址DS×16+VAL=20050H(9)MOV AX,ES:BX寄存器間接尋址ES×16+BX=21100H(10)MOV AX,SI寄存器間接尋址DS×16+SI=200A0H(11)MOV AX,VALBX帶位移的基址尋址DS×16+BX+VAL=20150H(12)MOV AX,VALBXSI帶位移的基址變址尋址DS×16+BX+SI+VAL=201F0H2.9 設(shè)AX=1122H,BX=3344H,CX=5566H,SP=2000H,試分析下列程序段執(zhí)行后,AX、BX、CX、S
13、P中的內(nèi)容各為多少?并畫出堆棧變化示意圖。解:第1條指令A(yù)X=1122HPUSH AXBX=3344HSP22HCX=5566H11HSP=1FFEH第2條指令PUSH BXSP44HAX=1122H33HBX=3344H22HCX=5566H11HSP=1FFCH第3條指令PUSH CXSP66H55H44HAX=1122H33HBX=3344H22HCX=5566H11HSP=1FFAH第4條指令POP AXSP44HAX=5566H33HBX=3344H22HCX=5566H11HSP=1FFCH第5條指令A(yù)X=5566HPOP CXBX=3344HSP22HCX=3344H11HSP=
14、1FFEH2.10 下列程序段中每一條指令執(zhí)行完后,AX中的十六位進(jìn)制內(nèi)容是什么?指令A(yù)X中的內(nèi)容指令MOV AX,0AX=0000HDEC AXAX=0FFFFHADD AX,7FFFFHAX=7FFEHADD AX,2AX=8000HNOT AXAX=7FFFHSUB AX,0FFFFHAX=8000HADD AX,8000HAX=0000HOR AX,0BFDFHAX=0BFDFHAND AX,0EBEDHAX=0ABCDHXCHG AH,ALAX=0CDABHSAL AX,1AX=9B56H (CF=1,PF=1)1100 1101 1010 1011算術(shù)左移RCL AX,1AX=36
15、ADH (CF=1,PF=1,OF=1)1001 1011 0101 0110帶進(jìn)位循環(huán)左移循環(huán)移位指令不影響除CF和OF以外的其他條件標(biāo)志。移位指令根據(jù)移位后的結(jié)果設(shè)置SF、ZF和PF位,AF位則無定義。RCL:OF=1最高有效位的值發(fā)生變化;PF保留原來的值;2.11 將十六進(jìn)制數(shù)62A0H與下列各個(gè)數(shù)相加,試給出和數(shù)及標(biāo)志位AF,SF,ZF,CF,OF和PF的狀態(tài)。(1) 9D60H和數(shù):0HAF=0,SF=0,ZF=1,CF=1,OF=0,PF=1(2) 4321H和數(shù):0A5C1HAF=0,SF=1,ZF=0,CF=0,OF=1,PF=02.12 從下列各個(gè)數(shù)中減去4AE0H,試給出
16、差值及標(biāo)志位AF,SF,ZF,CF,OF和PF的狀態(tài)。(1)1234H (2)9090H解:AF0,SF1,ZF0,CF1,OF0,PF0AF0,SF0,ZF0,CF0,OF1,PF02.13 假設(shè)BX00E3H,字變量VALUE中存放的內(nèi)容為79H,確定下列各條指令單獨(dú)執(zhí)行后的結(jié)果。題號指令BX寄存器的內(nèi)容簡單解釋(1)XOR BX,VALUE009AH0000 0000 1110 0011 XOR 0000 0000 0111 1001(2)AND BX,VALUE0061H0000 0000 1110 0011 AND 0000 0000 0111 1001(3)OR BX,VALUE0
17、0FBH0000 0000 1110 0011 OR 0000 0000 0111 1001(4)XOR BX,0FFH001CH0000 0000 1110 0011 XOR 0000 0000 1111 1111(5)AND BX,00000H(6)TEST BX,01H00E3HTEST指令只影響標(biāo)志位,不影響結(jié)果(1) XOR OSZAPC:0XXUX0 SF=0; ZF=0; PF=1(2) AND OSZAPC:0XXUX0 SF=0; ZF=0; PF=0(3) OR OSZAPC:0XXUX0 SF=0; ZF=0; PF=0(4) XOR OSZAPC:0XXUX0 SF=0
18、; ZF=0; PF=0(5) AND OSZAPC:0XXUX0 SF=0; ZF=1; PF=1(6) TEST OSZAPC:0XXUX0 SF=0; ZF=0; PF=02.14 試寫出執(zhí)行下列指令序列后BX寄存器的內(nèi)容。執(zhí)行前BX=6D16H。MOV CL, 7SHR BX, CL解:BX=6D16H 0110 1101 0001 0110B執(zhí)行后:0000 0000 1101 1010B = 00DAH2.15 假定DX=00B9H,CL=3,CF=1,確定下列各條指令單獨(dú)執(zhí)行后DX中的值。題號指令DX寄存器的內(nèi)容簡單解釋(1)SHR DX,1005CH00B9H = 0000 0
19、000 1011 1001B邏輯右移(2)SAR DX,CL0017H00B9H = 0000 0000 1011 1001B算術(shù)右移(3)SHL DX,CL05C8H00B9H = 0000 0000 1011 1001B邏輯左移(4)SHL DL,10072HB9H = 1011 1001B 邏輯左移(5)ROR DX,CL2017H00B9H = 0000 0000 1011 1001B 循環(huán)右移(6)ROL DL,CL00CDHB9H = 1011 1001B 循環(huán)左移(7)SAL DH,100B9HDH = 0 算術(shù)左移(8)RCL DX,CL05CCH00B9H = 0000 00
20、00 1011 1001B 帶進(jìn)位循環(huán)左移(9)RCR DL,100DCHB9H = 1011 1001B 帶進(jìn)位循環(huán)右移第3章 宏匯編語言程序設(shè)計(jì)3.1 對于下面的數(shù)據(jù)定義,各條指令單獨(dú)執(zhí)行后,有關(guān)寄存器的內(nèi)容是什么?FLDB DB ?TABLEA DW 20 DUP(?)TABLEB DB 'ABCD'(1) MOV AX, TYPE FLDB ; AX = 01H;字節(jié)類型(2) MOV AX, TYPE TABLEA ; AX = 02H;字類型(3) MOV CX, LENGTH TABLEA ; CX = 14H;DUP定義的變量,分配的單元數(shù)(4) MOV DX,
21、 SIZE TABLEA ; DX = 28H;SIZE = LENGTH * TYPE(5) MOV CX, LENGTH TABLEB ; CX = 01H;非DUP定義的變量,LENGTH=13.2 試寫出完成下列操作的偽指令語句:(1) 將56H, 78, B3H, 100存放在定義為字節(jié)變量ARRAY的存儲單元中。ARRAY DB 56H, 78, 0B3H, 100(2) 將字?jǐn)?shù)據(jù)2965H, 45H, 2965, A6H存放在定義為字變量DATA的存儲單元中。DATA DW 2965H, 45H, 2965, 0A6H(3) 將字節(jié)數(shù)據(jù)56H, C6H, 78H, 12H存放在字
22、變量ALPHA的存儲單元中,并且不改變數(shù)據(jù)按字節(jié)存儲的次序。ALPHA DW 0C656H, 1278H(4) 在BETA為首址的存儲單元中連續(xù)存放字節(jié)數(shù)據(jù),2個(gè)23,5個(gè)'A',10個(gè)(1, 2),20個(gè)空單元。BETA DB 2 DUP ( 23 ), 5 DUP ( 'A' ), 10 DUP (1, 2), 20 DUP ( ? )(5) 在STRING為首址的存儲單元中存放字符串'THIS IS A EXAMPE'。STRING DB 'THIS IS A EXAMPE'(6) 用符號COUNT替代100。COUNT E
23、QU 100 ( 或COUNT = 100 )3.3 畫圖表示下列語句中數(shù)據(jù)在存儲器中的存儲情況。(1) BYTE_VAR DB 'ABCD', 76, 57H, 3 DUP ( ? ), 2 DUP (1, 3)(2) WORD_VAR DW 5 DUP (0, 1), ?, 'AB', 'CD', 7965。(1) 從左到右、從上到下為地址增大的方向。41H42 H43 H44 H4CH57 H? ?01 H03 H01 H03 H(2) 從左到右、從上到下為地址增大的方向。0000010000000100000001000000010000
24、000100?424144431D1F3.4設(shè)置一個(gè)數(shù)據(jù)段DATA_SEG,其中連續(xù)存放下列的8個(gè)變量,用段定義語句和變量定義語句寫出數(shù)據(jù)段:(1) DATA1為字符串變量: 'DATA SEGMENT'(2) DATA2為十進(jìn)制數(shù)字字節(jié)變量: 72, 65, -10(3) DATA3 為十六進(jìn)制數(shù)字字節(jié)變量: 109, 98, 21, 40(4) DATA4為10個(gè)零的字節(jié)變量(5) DATA5為數(shù)字的ASCII字符字節(jié)變量: 12345(6) DATA6為十進(jìn)制數(shù)的字變量: 7, 9, 298, 1967(7) DATA7為十六進(jìn)制數(shù)的字變量: 785, 13475(8)
25、DATA8為本段中字變量和字節(jié)變量之間的字節(jié)單元數(shù)之差。解:DATA SEGMENTDATA1 DB 'DATA SEGMENT'DATA2 DB 72, 65, -10DATA3 DB 6DH, 62H, 15H, 28HDATA4 DB 10 DUP (0)DATA5 DB '12345'DATA6 DW 7, 9, 298, 1967DATA7 DW 0311H, 34A3HDATA8 DB $ - DATA6 - (DATA6 - DATA1)DATA ENDS3.5假設(shè)程序中的變量定義如下:BUF1 DB 100 DUP ('A')BU
26、F2 DW 1275H, 567, 0C5HBUF3 DB 20 DUP (?)BUF4 DB 7, 4, 6, 9, 8(1) 用一條指令將BUF1的偏移地址送入BX。MOV BX, OFFSET BUF1或 LEA BX, BUF1(2) 將BUF2的第三字節(jié)數(shù)據(jù)送入CL。MOVCL, BUF2+2(3) 將A6H送入BUF3的第十個(gè)字節(jié)單元中。MOVBUF3+9, 0A6H(4) 用偽指令寫出BUF1和BUF2二者的總長度(字節(jié)數(shù))COUNT EQU BUF3 - BUF13.6 給出等值語句如下:ALPHA EQU 100BETA EQU 25GAMMA EQU 2求下列表達(dá)式的值:(
27、1) ALPHA * 100 + BETA ; 10025D = 2729H(2) ALPHA MOD GAMMA + BETA ; 100 MOD 2 + 25 = 25D = 0019H(3) (ALPHA + 2) * BETA - ALPHA ; (100 + 2 ) * 25 100 = 2450D = 0992H(4) (BETA / 3) MOD 5 ; (25 / 3) MOD 5 = 03H(5) BETA AND 7 ; 0001 1001 AND 0000 0111 = 01H(6) GAMMA OR 3 ; 0000 0010 OR 0000 0011 = 0003H3
28、.7 下列語句中,在存儲器中每個(gè)變量分配到多少字節(jié)?VR1 DW 9 ; 2字節(jié)VR2 DW 4 DUP (?), 2 ; 4 * 2 + 2 = 10字節(jié)VR3 EQU 100 ; 0字節(jié)VR4 DD VR3 DUP (?) ; 100 * 4 = 400字節(jié)VR5 DB 2 DUP (?, VR3 DUP (0, 1) ) ; 2 * ( 1 + 100 * 2 ) = 402字節(jié)VR6 DB 'HOW ARE YOU?' ; 12字節(jié)3.8 試寫出一個(gè)完整的數(shù)據(jù)段DATA_SEG,首先把10個(gè)壓縮的BCD碼29存放在ARRAY變量字節(jié)單元中,緊接著把-25, 4, 10,
29、 76, 3存放在ALPHA數(shù)組變量的字單元中,接著留100個(gè)空單元作為工作單元用,它定義為字節(jié)變量BUFFER。DATA_SEG SEGMENTARRAY DB 10 DUP ( 29H )ALPHA DW -25, 4, 10, 76, 3BUFFER DB 100 DUP ( ? )DATA_SEG ENDS3.9 將存放在字節(jié)變量BCD1中的兩個(gè)十進(jìn)制數(shù)的ASCII碼合并為一字節(jié)壓縮型BCD碼,存入字節(jié)變量BCD2,試編寫程序。DATA SEGMENTBCD1 DB '34'BCD2 DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS
30、:DATASTART: MOV AX,DATA MOV DS,AX MOV AL, BCD1 MOV CL, 4 SAL AL, CL MOV BL, BCD1+1 AND BL, 0FH OR AL, BL MOV BCD2, AL MOV AH, 4CH INT 21HCODE ENDS END START3.10 分析下列程序段,并說明完成什么操作。ADDNUM DB 28H, 46H, 95H, 26HADDSUM DB 2 DUP (?)MOV AL, ADDNUM ; ADDNUM第1個(gè)數(shù)據(jù)送到ALADD AL, ADDNUM + 2 ; ADDNUM第3個(gè)數(shù)據(jù)加到ALDAA ;
31、加法的十進(jìn)制調(diào)整指令MOV ADDSUM, AL ; ADDNUM第1、3個(gè)數(shù)據(jù)的和放到ADDSUMMOV AL, ADDNUM + 1 ; ADDNUM第2個(gè)數(shù)據(jù)送到ALADC AL, ADDNUM + 3 ; ADDNUM第4個(gè)數(shù)據(jù)加到ALDAA ; 加法的十進(jìn)制調(diào)整指令MOV ADDSUM + 1, AL ; ADDNUM第2、4個(gè)數(shù)據(jù)的和放到ADDSUM + 1解:將ADDNUM的第1、3個(gè)數(shù)據(jù)相加,并將結(jié)果進(jìn)行十進(jìn)制調(diào)整轉(zhuǎn)換為壓縮型BCD碼,并放到ADDSUM的第1個(gè)字節(jié)的位置;將ADDNUM的第2、4個(gè)數(shù)據(jù)相加,并將結(jié)果進(jìn)行十進(jìn)制調(diào)整轉(zhuǎn)換為壓縮型BCD碼,并放到ADDSUM的第2個(gè)
32、字節(jié)的位置。即:46282695,結(jié)果調(diào)整為壓縮型BCD碼,結(jié)果以字變量形式放到ADDSUM單元。3.11 寫出完成下述功能的程序段:(1) 將32H存入CH中。(2) 將CH中的內(nèi)容與2AH相加。(3) 將CH中的內(nèi)容乘2。(4) 將CH中的內(nèi)容存入以BX作為相對基址尋址的數(shù)組變量NUM的第十個(gè)字節(jié)單元中(數(shù)據(jù)段)。問:各程序段分別執(zhí)行后,CH中的內(nèi)容是多少?MOV CH, 32H ; (1) CH = 32HADD CH, 2AH ; (2) CH = 5CHMOV AL, 02H ; MUL CH ; (3) CH = 5CH, AX = 0B8HMOV BX + NUM + 9, CH
33、 ; (4) CH = 5CH3.12 編寫程序,計(jì)算Z = ( ( W X ) / 10 * Y )2,r為相除所得余數(shù)。其中W, X, Y均為8位有符號二進(jìn)制數(shù)。DATA SEGMENTW DB 12X DB 24Y DB 48Z DW 2 DUP (?)r db ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL, W SUB AL, X ; W - X -> AL CBW MOV BL, 10 IDIV BL ; (W - X) / 10 -> AL MOV r,
34、AH ; (W - X) % 10 -> r MOV BL, Y IMUL BL ; (W - X) / 10 * Y -> AX MOV BX, AX IMUL BX ; (W - X) / 10 * Y)2 -> DX, AX MOV Z, AX MOV Z+2, DX ; (W - X) / 10 * Y)2 -> Z MOV AH, 4CH INT 21HCODE ENDS END START3.13 在數(shù)組字變量ARRAY中有10個(gè)數(shù)據(jù),將數(shù)組中的第5個(gè)字?jǐn)?shù)據(jù)求補(bǔ),再放回原處,畫出程序流程圖和編寫程序。3.14 用重復(fù)前綴串比較指令比較兩個(gè)字符串,一個(gè)是在數(shù)據(jù)
35、段的字符串變量STR1(內(nèi)容為'THIS IS A DOG'),另一個(gè)是在附加段的字符串變量STR2(內(nèi)容為'THIS IS A COCK')。當(dāng)比較到第一個(gè)不相同的字符時(shí)停止比較,把相同部分字符串長度存入數(shù)據(jù)段的字節(jié)變量NUM中。寫出分段結(jié)構(gòu)的程序段,應(yīng)包括段定義,偽指令和指令序列。問:相同部分字符串長度為多少?在STR1和STR2第一個(gè)不同處的偏移地址是多少?DATA SEGMENTSTR1 DB 'THIS IS A DOG'LEN1 DB $-STR1NUM DB ?DATA ENDSEDATA SEGMENTSTR2 DB 'T
36、HIS IS A COCK'LEN2 DB $-STR2EDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EDATASTART: MOV AX,DATA MOV DS,AX MOV AX,EDATA MOV ES,AX CLD ;串操作由低地址向高地址 MOV CH,0 MOV AL,LEN1 CMP AL,ES:LEN2 JB B1L2 MOV CL,ES:LEN2 JMP CMPOKB1L2: MOV CL,ALCMPOK: LEA SI,STR1 LEA DI,ES:STR2 REPE CMPSB MOV AX,SI DEC AL
37、;不同處的字節(jié)偏移地址 MOV NUM,AL ;不同處的字節(jié)偏移地址放到NUM MOV AH, 4CH INT 21HCODE ENDS END START答:相同長度10,不同處的偏移地址103.15 有兩個(gè)壓縮型BCD碼相加,被加數(shù)(6756)和加數(shù)(7321)存放在數(shù)據(jù)段的BUFFER變量的4個(gè)連續(xù)的字節(jié)存儲單元中,結(jié)果(和)存放在RESUT變量的三個(gè)字單元中(考慮到有進(jìn)位的情況),編制具有數(shù)據(jù)段和代碼段結(jié)構(gòu)的完整程序,程序中需要作必要的注釋。注:結(jié)果存放在RESUT字節(jié)變量中,三個(gè)字單元不知要求怎么用DATA SEGMENTBUFFER DB 67H,56H,73H,21HRESUT
38、DB 3 DUP (?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,BUFFER+1 ;第一個(gè)數(shù)據(jù)低兩位->AL MOV BL,BUFFER+3 ;第二個(gè)數(shù)據(jù)低兩位->BL ADD AL,BL ;低兩位相加 DAA ;十進(jìn)制調(diào)整 MOV DL,AL ;低兩位相加結(jié)果放到DL MOV AL,BUFFER ;第一個(gè)數(shù)據(jù)高兩位->AL MOV BL,BUFFER+2 ;第二個(gè)數(shù)據(jù)高兩位->BL ADC AL,BL ;低兩位相加 DAA ;十進(jìn)制調(diào)整 MOV BL
39、,0 JNC HCF INC BLHCF: MOV RESUT,BL ;存放最高位 MOV RESUT+1,AL ;存放中間兩位 MOV RESUT+2,DL ;存放最低兩位 MOV AH, 4CH INT 21HCODE ENDS END START3.16 將SRCBUF變量定義的80個(gè)字符串傳送到DSTBUF變量定義的存儲區(qū)去。當(dāng)遇到0DH時(shí),不將此字符傳送到DSTBUF變量中去。試編寫程序,并加以注釋。DATA SEGMENTSRCBUF DB 'aaa',0DH,'bbb'DSTBUF DB 80 DUP (?)DATA ENDSCODE SEGMEN
40、T ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,07 ;比較次數(shù)->CX MOV SI,0 ;源串指針->SI MOV DI,0 ;目標(biāo)串指針->DISDCMP: MOV AL,SRCBUFSI CMP AL,0DH JZ NSEND MOV DSTBUFDI,AL ;不等于0DH,保存數(shù)據(jù),修改SI、DI INC DINSEND: INC SI ;等于0DH,不保存數(shù)據(jù),修改SI LOOP SDCMP MOV AH, 4CH INT 21HCODE ENDS END START3.17 已知有n個(gè)元素存
41、放在以BUF為首址的字節(jié)存儲區(qū)中,試統(tǒng)計(jì)其中負(fù)元素的個(gè)數(shù),畫出程序框圖,編寫程序。DATA SEGMENTBUF DB 92H,12H,0F3H,23H,87HLEN EQU $-BUFDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,LEN ;比較次數(shù)->CX MOV SI,0 ;字節(jié)存儲區(qū)指針 MOV DL,0 ;負(fù)元素個(gè)數(shù)初始化NEGCMP: MOV AL,BUFSI CMP AL,0 JNL C0GE INC DL ;小于0,個(gè)數(shù)加1,指針加1C0GE: INC SI ;
42、不小于0,指針加1 LOOP NEGCMP MOV AH, 4CH INT 21HCODE ENDS END START3.18 已知以BUF為首址的字存儲區(qū)中存放著n個(gè)有符號的二進(jìn)制數(shù),試編寫程序,將大于等于0的數(shù)送以BUF1為首址的字存儲區(qū)中,將小于0的數(shù)送以BUF2為首址的字存儲區(qū)中,并畫出程序框圖。DATA SEGMENTBUF DW 1212H,0FF12H,3434H,8989H,5656H,9090HLEN EQU ($ - BUF) / 2BUF1 DW LEN DUP (?)BUF2 DW LEN DUP (?)DATA ENDSCODE SEGMENT ASSUME CS:
43、CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,LEN ;循環(huán)次數(shù),即BUF的單元數(shù) MOV BX,0 ;BUF指針初始化 MOV SI,0 ;BUF1指針初始化 MOV DI,0 ;BUF2指針初始化CLOOP: MOV AX,BX ;BUF數(shù)據(jù)->AX CMP AX,0 JGE TO1 MOV BUF2DI,AX ;AX<0,AX->BUF2,DI+2->DI,BX+2->BX INC DI INC DI JMP CONTINUETO1: MOV BUF1SI,AX ;AX>=0,AX->BUF1,S
44、I+2->SI,BX+2->BX INC SI INC SICONTINUE:INC BX INC BX LOOP CLOOP MOV AH, 4CH INT 21HCODE ENDS END START3.19 已知在以BUF為首地址的字節(jié)存儲區(qū)中,存放著一個(gè)以$作結(jié)束標(biāo)志的字符串,試編寫程序,在CRT上顯示該字符串,并要求將小寫字母以大寫字母形式顯示出來。畫出程序框圖。DATA SEGMENTBUF DB 'abCDalskdjf$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,0 ;BUF地址指針ALOOP: MOV DL,BUFSI ;BUF數(shù)據(jù)->DL CMP DL,'$' ;DL='$',EXIT JE STOP C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司游戲線上活動(dòng)方案
- 公司美甲活動(dòng)策劃方案
- 公司文化曬單活動(dòng)方案
- 公司組織員工清雪活動(dòng)方案
- 公司每周團(tuán)體活動(dòng)方案
- 公司百日會戰(zhàn)活動(dòng)方案
- 公司搬遷慶?;顒?dòng)方案
- 公司日常野餐活動(dòng)方案
- 公司活動(dòng)全案策劃方案
- 公司百年慶典策劃方案
- 中華民族共同體概論課件專家版2第二講 樹立正確的中華民族歷史觀
- 小學(xué)科技活動(dòng)方案主題設(shè)計(jì)
- Control-M作業(yè)配置手冊
- 天然氣安全周知卡
- 查經(jīng)資料大全
- 船舶網(wǎng)絡(luò)安全培訓(xùn)課件
- 充電樁巡檢維護(hù)保養(yǎng)記錄表
- 第九屆全國大學(xué)生化學(xué)實(shí)驗(yàn)邀請賽筆試試題
- 呼吸機(jī)相關(guān)性肺炎(VAP)-的預(yù)防措施
- 欽州市第二人民醫(yī)院白石湖院區(qū)項(xiàng)目環(huán)境影響報(bào)告書
- 如何做好研究生導(dǎo)師
評論
0/150
提交評論