




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1章 緒論1.2 用8位二進制碼,寫出下列十進制數的原碼和補碼表示解釋:原碼:最高位為符號位,正數符號位為0,負數符號位為1。補碼:正數的補碼與原碼相同;負數的補碼:由其原碼除符號位保持不變外,其余各位按位取反,末位加1而成。解:(1) +65原 = 0100 0001B 注:65 = 64 + 1 +65補 = +65原 = 0100 0001B 注:正數補碼與原碼相同(2) +115原 = 0111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 +115補 = +115原 = 0111 0011B 注:正數補碼與原碼相同(3) -65原 = 1100 0001B 注
2、:65 = 64 + 1 -65補 = 1011 1110B + 1B = 1011 1111B 注:除符號位外,按位取反,末位加1(4) -115原 = 1111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 -115補 = 1000 1100B + 1B = 1000 1101B 注:除符號位外,按位取反,末位加11.3 用16位二進制碼,寫出下列十進制數的原碼和補碼表示。(1) +120原 = 0000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 +120補 = +120原 = 0000 0000 0111 1000B 注:正
3、數補碼與原碼相同(2) -120原 = 1000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 -120補 = 1111 1111 1000 0111B + 1B = 1111 1111 1000 1000B 注:除符號位外,按位取反,末位加1(3) +230原 = 0000 0000 1110 0110B 注:230 = 128 + 64 + 32 + 4 + 2 +230補 = 0000 0000 1110 0110B 注:正數補碼與原碼相同(4) -230原 = 1000 0000 1110 0110B 注:230 = 128 + 64 + 32 +
4、4 + 2 -230補 = 1111 1111 0001 1001B + 1B = 1111 1111 0001 1010B 注:除符號位外,按位取反,末位加11.4 寫出下列用補碼表示的二進制數的真值。解釋:正數的補碼 = 原碼負數的補碼:再次求補碼得到其原碼解:(1) 0011 0111 正數的補碼 真值:32 + 16 + 4 + 2 + 1 = +55(2) 0101 1001 正數的補碼 真值:64 + 16 + 8 + 1 = +89(3) 1000 1101 負數的補碼 真值:1111 0010B + 1B = 1111 0011B = -115(4) 1111 1001 負數的
5、補碼 真值:1000 0110B + 1B = 1000 0111B = -7第2章 Intel 8086微處理器2.2 在存儲器中存放的數據如圖所示。試讀出75422H和75424H字節單元的內容是什么?讀出75422H和75424H字單元的內容是什么?存儲器7542 0H13H1H78H2H9CH3H24H4H5DH5HE6H解:75422H字節單元的內容:9CH75424H字節單元的內容:5DH75422H字單元的內容:249CH75424H字單元的內容: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說明:不同的段地址不同的偏移地址可以指向同一個物理地址,即各個邏輯段可以相互重疊。2.4 在存儲器分段結構中,每個段區最大可占用多少地址范圍,為什么?如果
7、在8086的機器中,若段間不允許重疊,那么最多可分多少個段區?解:若為8086微處理器,每個段區最大可占用64KB,因為所有內部寄存器都只有16位。若每段64KB,最多可分16個段區,因為8086微處理器有20條地址線,可訪問存儲器的最大容量為1MB。2.5 如果從存儲器的2000H地址開始分配段區,要求數據段占用1KB范圍,堆棧段占用512B范圍,代碼段占用8KB范圍。按數據段、堆棧段和代碼段的順序連續存放,試畫出存儲器分段地址分配示意圖,圖中應寫明各段寄存器的內容?解: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 指出下列指令的源和目標操作數的尋址方式:題號指令目的操作數的尋址方式源操作數的尋址方式(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 現有DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各指令執行完后AX寄存器的內容。題號指令AX寄存器的內容簡單解釋(1)MOV AX,1200H1200H立即數賦給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,數據段中變量名VAL的偏移地址值為0050H,試指出下
11、面源操作數字段的尋址方式是什么?其物理地址值是多少?題號指令源操作數的尋址方式源操作數的物理地址(1)MOV AX, 00ABH立即尋址在代碼段中,與CS、IP有關(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 設AX=1122H,BX=3344H,CX=5566H,SP=2000H,試分析下列程序段執行后,AX、BX、CX、S
13、P中的內容各為多少?并畫出堆棧變化示意圖。解:第1條指令AX=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條指令AX=5566HPOP CXBX=3344HSP22HCX=3344H11HSP=
14、1FFEH2.10 下列程序段中每一條指令執行完后,AX中的十六位進制內容是什么?指令AX中的內容指令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算術左移RCL AX,1AX=36
15、ADH (CF=1,PF=1,OF=1)1001 1011 0101 0110帶進位循環左移循環移位指令不影響除CF和OF以外的其他條件標志。移位指令根據移位后的結果設置SF、ZF和PF位,AF位則無定義。RCL:OF=1最高有效位的值發生變化;PF保留原來的值;2.11 將十六進制數62A0H與下列各個數相加,試給出和數及標志位AF,SF,ZF,CF,OF和PF的狀態。(1) 9D60H和數:0HAF=0,SF=0,ZF=1,CF=1,OF=0,PF=1(2) 4321H和數:0A5C1HAF=0,SF=1,ZF=0,CF=0,OF=1,PF=02.12 從下列各個數中減去4AE0H,試給出
16、差值及標志位AF,SF,ZF,CF,OF和PF的狀態。(1)1234H (2)9090H解:AF0,SF1,ZF0,CF1,OF0,PF0AF0,SF0,ZF0,CF0,OF1,PF02.13 假設BX00E3H,字變量VALUE中存放的內容為79H,確定下列各條指令單獨執行后的結果。題號指令BX寄存器的內容簡單解釋(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指令只影響標志位,不影響結果(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 試寫出執行下列指令序列后BX寄存器的內容。執行前BX=6D16H。MOV CL, 7SHR BX, CL解:BX=6D16H 0110 1101 0001 0110B執行后:0000 0000 1101 1010B = 00DAH2.15 假定DX=00B9H,CL=3,CF=1,確定下列各條指令單獨執行后DX中的值。題號指令DX寄存器的內容簡單解釋(1)SHR DX,1005CH00B9H = 0000 0
19、000 1011 1001B邏輯右移(2)SAR DX,CL0017H00B9H = 0000 0000 1011 1001B算術右移(3)SHL DX,CL05C8H00B9H = 0000 0000 1011 1001B邏輯左移(4)SHL DL,10072HB9H = 1011 1001B 邏輯左移(5)ROR DX,CL2017H00B9H = 0000 0000 1011 1001B 循環右移(6)ROL DL,CL00CDHB9H = 1011 1001B 循環左移(7)SAL DH,100B9HDH = 0 算術左移(8)RCL DX,CL05CCH00B9H = 0000 00
20、00 1011 1001B 帶進位循環左移(9)RCR DL,100DCHB9H = 1011 1001B 帶進位循環右移第3章 宏匯編語言程序設計3.1 對于下面的數據定義,各條指令單獨執行后,有關寄存器的內容是什么?FLDB DB ?TABLEA DW 20 DUP(?)TABLEB DB 'ABCD'(1) MOV AX, TYPE FLDB ; AX = 01H;字節類型(2) MOV AX, TYPE TABLEA ; AX = 02H;字類型(3) MOV CX, LENGTH TABLEA ; CX = 14H;DUP定義的變量,分配的單元數(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存放在定義為字節變量ARRAY的存儲單元中。ARRAY DB 56H, 78, 0B3H, 100(2) 將字數據2965H, 45H, 2965, A6H存放在定義為字變量DATA的存儲單元中。DATA DW 2965H, 45H, 2965, 0A6H(3) 將字節數據56H, C6H, 78H, 12H存放在字
22、變量ALPHA的存儲單元中,并且不改變數據按字節存儲的次序。ALPHA DW 0C656H, 1278H(4) 在BETA為首址的存儲單元中連續存放字節數據,2個23,5個'A',10個(1, 2),20個空單元。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 畫圖表示下列語句中數據在存儲器中的存儲情況。(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設置一個數據段DATA_SEG,其中連續存放下列的8個變量,用段定義語句和變量定義語句寫出數據段:(1) DATA1為字符串變量: 'DATA SEGMENT'(2) DATA2為十進制數字字節變量: 72, 65, -10(3) DATA3 為十六進制數字字節變量: 109, 98, 21, 40(4) DATA4為10個零的字節變量(5) DATA5為數字的ASCII字符字節變量: 12345(6) DATA6為十進制數的字變量: 7, 9, 298, 1967(7) DATA7為十六進制數的字變量: 785, 13475(8)
25、DATA8為本段中字變量和字節變量之間的字節單元數之差。解: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假設程序中的變量定義如下: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的第三字節數據送入CL。MOVCL, BUF2+2(3) 將A6H送入BUF3的第十個字節單元中。MOVBUF3+9, 0A6H(4) 用偽指令寫出BUF1和BUF2二者的總長度(字節數)COUNT EQU BUF3 - BUF13.6 給出等值語句如下:ALPHA EQU 100BETA EQU 25GAMMA EQU 2求下列表達式的值:(
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 下列語句中,在存儲器中每個變量分配到多少字節?VR1 DW 9 ; 2字節VR2 DW 4 DUP (?), 2 ; 4 * 2 + 2 = 10字節VR3 EQU 100 ; 0字節VR4 DD VR3 DUP (?) ; 100 * 4 = 400字節VR5 DB 2 DUP (?, VR3 DUP (0, 1) ) ; 2 * ( 1 + 100 * 2 ) = 402字節VR6 DB 'HOW ARE YOU?' ; 12字節3.8 試寫出一個完整的數據段DATA_SEG,首先把10個壓縮的BCD碼29存放在ARRAY變量字節單元中,緊接著把-25, 4, 10,
29、 76, 3存放在ALPHA數組變量的字單元中,接著留100個空單元作為工作單元用,它定義為字節變量BUFFER。DATA_SEG SEGMENTARRAY DB 10 DUP ( 29H )ALPHA DW -25, 4, 10, 76, 3BUFFER DB 100 DUP ( ? )DATA_SEG ENDS3.9 將存放在字節變量BCD1中的兩個十進制數的ASCII碼合并為一字節壓縮型BCD碼,存入字節變量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個數據送到ALADD AL, ADDNUM + 2 ; ADDNUM第3個數據加到ALDAA ;
31、加法的十進制調整指令MOV ADDSUM, AL ; ADDNUM第1、3個數據的和放到ADDSUMMOV AL, ADDNUM + 1 ; ADDNUM第2個數據送到ALADC AL, ADDNUM + 3 ; ADDNUM第4個數據加到ALDAA ; 加法的十進制調整指令MOV ADDSUM + 1, AL ; ADDNUM第2、4個數據的和放到ADDSUM + 1解:將ADDNUM的第1、3個數據相加,并將結果進行十進制調整轉換為壓縮型BCD碼,并放到ADDSUM的第1個字節的位置;將ADDNUM的第2、4個數據相加,并將結果進行十進制調整轉換為壓縮型BCD碼,并放到ADDSUM的第2個
32、字節的位置。即:46282695,結果調整為壓縮型BCD碼,結果以字變量形式放到ADDSUM單元。3.11 寫出完成下述功能的程序段:(1) 將32H存入CH中。(2) 將CH中的內容與2AH相加。(3) 將CH中的內容乘2。(4) 將CH中的內容存入以BX作為相對基址尋址的數組變量NUM的第十個字節單元中(數據段)。問:各程序段分別執行后,CH中的內容是多少?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 編寫程序,計算Z = ( ( W X ) / 10 * Y )2,r為相除所得余數。其中W, X, Y均為8位有符號二進制數。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 在數組字變量ARRAY中有10個數據,將數組中的第5個字數據求補,再放回原處,畫出程序流程圖和編寫程序。3.14 用重復前綴串比較指令比較兩個字符串,一個是在數據
35、段的字符串變量STR1(內容為'THIS IS A DOG'),另一個是在附加段的字符串變量STR2(內容為'THIS IS A COCK')。當比較到第一個不相同的字符時停止比較,把相同部分字符串長度存入數據段的字節變量NUM中。寫出分段結構的程序段,應包括段定義,偽指令和指令序列。問:相同部分字符串長度為多少?在STR1和STR2第一個不同處的偏移地址是多少?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、;不同處的字節偏移地址 MOV NUM,AL ;不同處的字節偏移地址放到NUM MOV AH, 4CH INT 21HCODE ENDS END START答:相同長度10,不同處的偏移地址103.15 有兩個壓縮型BCD碼相加,被加數(6756)和加數(7321)存放在數據段的BUFFER變量的4個連續的字節存儲單元中,結果(和)存放在RESUT變量的三個字單元中(考慮到有進位的情況),編制具有數據段和代碼段結構的完整程序,程序中需要作必要的注釋。注:結果存放在RESUT字節變量中,三個字單元不知要求怎么用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 ;第一個數據低兩位->AL MOV BL,BUFFER+3 ;第二個數據低兩位->BL ADD AL,BL ;低兩位相加 DAA ;十進制調整 MOV DL,AL ;低兩位相加結果放到DL MOV AL,BUFFER ;第一個數據高兩位->AL MOV BL,BUFFER+2 ;第二個數據高兩位->BL ADC AL,BL ;低兩位相加 DAA ;十進制調整 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個字符串傳送到DSTBUF變量定義的存儲區去。當遇到0DH時,不將此字符傳送到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 ;比較次數->CX MOV SI,0 ;源串指針->SI MOV DI,0 ;目標串指針->DISDCMP: MOV AL,SRCBUFSI CMP AL,0DH JZ NSEND MOV DSTBUFDI,AL ;不等于0DH,保存數據,修改SI、DI INC DINSEND: INC SI ;等于0DH,不保存數據,修改SI LOOP SDCMP MOV AH, 4CH INT 21HCODE ENDS END START3.17 已知有n個元素存
41、放在以BUF為首址的字節存儲區中,試統計其中負元素的個數,畫出程序框圖,編寫程序。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 ;比較次數->CX MOV SI,0 ;字節存儲區指針 MOV DL,0 ;負元素個數初始化NEGCMP: MOV AL,BUFSI CMP AL,0 JNL C0GE INC DL ;小于0,個數加1,指針加1C0GE: INC SI ;
42、不小于0,指針加1 LOOP NEGCMP MOV AH, 4CH INT 21HCODE ENDS END START3.18 已知以BUF為首址的字存儲區中存放著n個有符號的二進制數,試編寫程序,將大于等于0的數送以BUF1為首址的字存儲區中,將小于0的數送以BUF2為首址的字存儲區中,并畫出程序框圖。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 ;循環次數,即BUF的單元數 MOV BX,0 ;BUF指針初始化 MOV SI,0 ;BUF1指針初始化 MOV DI,0 ;BUF2指針初始化CLOOP: MOV AX,BX ;BUF數據->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為首地址的字節存儲區中,存放著一個以$作結束標志的字符串,試編寫程序,在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數據->DL CMP DL,'$' ;DL='$',EXIT JE STOP C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新疆生產建設兵團中考地理試卷及答案
- 海上風電并網技術突破與規模化發展中的電網適應性研究
- 培訓機構沒發票管理制度
- 施工項目招標管理制度
- 臨床技能培訓室管理制度
- 服務企業忠誠管理制度
- 日常落地檢查管理制度
- 安全教育培訓師管理制度
- 地下停車場車庫管理制度
- 出租車運營公司管理制度
- 2024年婚內出軌協議書模板范本2019版
- 水利工程閥門安裝及調試方案
- 專項訓練主謂一致專題(含答案)含答案解析
- 【中國傳媒大學】2024中國虛擬數字人影響力指數報告
- 北京市初級注冊安全工程師真題
- GB/T 44450-2024光學和光子學光學材料和元件0.78 μm~25 μm紅外光譜用光學材料特性
- 代持股協議書
- 【網易云聽音樂的品牌營銷問題及優化建議探析(論文)11000字】
- 歷屆“挑戰杯”全國大學生課外科技學術作品競賽獲獎作品
- 形勢與政策(23-24-1學期)學習通超星期末考試答案章節答案2024年
- 貴州省2024年小升初語文模擬考試試卷(含答案)
評論
0/150
提交評論