⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.txt

📁 IBM汇编语言程序设计(温
💻 TXT
📖 第 1 页 / 共 2 页
字号:
LEA SI ,[CONAME+3]
LODSW 
(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:
LEA DI ,[PRLINE+5]
STOSW
(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:
LEA DI,CONAME                         ;把CONAME中第一個字符偏移地址放入DI中
MOV CX,20                             ;把重複次數放到CX中
MOV AL,20H                            ;把空格符的ASCII值放入AL中
CLD                                    ;從低到高
REPNE   SCASB                          ;比較
MOV BH,[DI-1]R                        ;把檢查到的空格符送到BH中
30。
MOV CX,12H                            ;把重複次數放到CX中。這裏用十六進制表示   
MOV SI,0                              ;初始化SI
MOV AX,26H                            ;把&字符的ASCII值放入AX
CHECK: CMP AX,STRING[SI]             ;依次查找
INC SI
LOOPNE  CHECK                          ;找到了就退出
MOV AX,20H                            ;把空格符的ASCII值勤放入AX中
MOV STRING[SI-1],AX                   ;用空格符代替&
31。(1)用空格符清除PRINT_LINE域的程序实现:
MOV AL,20H
LEA DI ,PRINT_LINE
MOV  CX,132
CLD 
REP STOSB
(2)在STUDENT_ADDR中查找 第一个’_‘的程序实现:
MOV AX,2DH                                                ;把“—”的ASCII值放入AX 
MOV SI,0                                                  ;初始化SI
MOV CX,9                                                  ;把重複次數放入CX中
;依次檢查STUDENT-ADDR中的字符是否為"_",找到第一个停下来
CHECK:CMP AX ,STUDENT_ADDR[SI]  
INC SI 
LOOPNZ CHECK
(3)在STUDENT_ADDR中查找最后一个”_“的程序实现:
;和第二題不同的就是這次是從右到左查詢,所以SI的初始化為9
MOV AX,2DH
MOV SI ,9
MOV CX,9
CHECK :CMP AX,STUDENT_ADDR[SI]
DEC SI
LOOPNZ CHECK
(4)程序實現:
MOV AL,2OH                           ;把空格符的ASCII值放入AL中
LEA DI ,STUDENT_NAME                 ;把STUDENT_NAME中第一个字符偏移地址放到DI中
MOV CX,30                             ;把重复次数放到CX中
CLD                                   ;让DI从低位移到高位
REPZ SCASB                            ;如果有不是空格符的,就退出
JZ  STORE                             ;如果全是空格符,就转到STORE中
;用*代替空格
STORE:MOV AL 2AH
MOV CX ,30
STD                                   ;注意,这里是把前面从低到高移动的DI再从高到低移上去~~
REP STOSB
(5)程序实现:
;把STUDENT_NAME 移到PRINT_LINE的前30个字节中
LEA SI, STUDENT_NAME 
LEA DI,PRINT_LINE
MOV CX ,30
CLD 
REP MOVSB
;把STUDENT_ADDR移到PRINT_LINE的后9个字节中
LEA SI ,[STUDENT_ADDR+9]
LEA DI,[PRINT_LINE+132]
MOV CX,9
STD 
REP MOVSB
32。程序实现: 
    。。。
LEA  SI,OLDS
LEA DI,NEWS
MOV CX,5
REPZ  CMPSB
JNZ  NEW_LESS
     。。。
33。
(1)CMP  DX,CX
     JA   EXCEED
(2)CMP BX,AX
     JG  EXCEED
(3)CMP CX,0
     JZ  ZERO
(4)CMP BX,AX
     JO  OVERFLOW
(5)CMP BX,AX
     JLE EQ_SMA
(6)  CMP DX,CX
     JBE EQ_CX
34。(1)跳转到:L1
    (2)跳转到L1
    (3)跳转到L2
    (4)跳转到L5
    (5)跳转到L5
35。
(1)可以引起转移到L1的指令有:   NB  ,BE ,NL ,LE
(2)可以引起转移到L1的指令有:   同上
(3)可以引起转移到L1的指令有:   B,BE ,L , LE 
(4)可以引起转移到L1的指令有:   NB  ,NBE ,NL ,NLE 
(5)可以引起转移到L1的指令有:   同上
(6)可以引起转移 到L1的指令有:  同(3)
(7)可以引起转移 到L1的指令有:  同上  
36。
37。 程序流程图就不画了,呵呵,程序如下~~
MOV AL,STAUS[SI]                   ;把要测试的字节放到AL中
AND AL,2AH                         ;把第一,三,五位为一其他位为0的数--2AH,与这个字节比较,结果  
                                    ;放到AL中 
JZ ROUTINE_4                        ;如果结果为0,则三位都为0
XOR AL,2AH                          ; 前面相与的结果再与2AH异或
JZ ROUTINE_1                        ;如果结果为0,则三位都为1
BSF BL,AL                           
BSR BL ,AL
CMP BL,CL
;如果向前和向后测试后,第一个1 的位置相同,说明只有一个1,则异或运算前有AL中有两个1
JE ROUTINE_2
ROUTINE_1
注:本题还有其他解法,请大家自己试试~~
38。(1)当括号内是:LOOP时,循环四次,程序结束后
(AX)=05  (BX)= 16   (CX)=0 (DX)=0
(2) 当括号内是: LOOPE 时,不循环,程序结束后
(AX)=02 (BX)=04 (CX)=03 (DX)=02
(3)当括号内是:LOOPNE 时:循环三次,程序结束后
(AX)=04 (BX)=11 (CX)=01 (DX)=0

39。图,就不画了,呵呵~~自己看一下课本,P101~~
40.。(1)0000 3100H   (2)5100H    (3)7100H
41。 (1)目的地址:2004H  内容依次为: 56H  F4H   23H    98H
     (2)目的地址: 384CH     内容依次为: 91H  34H   F2H    01H
     (3)目的地址:   寄存器,无物理地址~     内容依次为:92H   6DH   A2H  4CH
42。 (1)PUSH AX
     (SP)<------(SP)-2
       (SP+1)<-----(AH)    (SP)<------(AL)
(2)POP ESI  
       (ESI)<-------((ESP)+3,(ESP)+2,(ESP)+1, (ESP))
       (ESP)<-------(ESP)+4
(3)PUSH [BX]
      (SP)<------(SP)-2
       (SP+1)<-----([BX+1])    (SP)<------([BX])
(4) PUSHAD
   (ESP)<-------(EAX)
   (ESP-4)<-------(ECX)
   (ESP-8)<-------(EDX)
   (ESP-12)<-------(EBX)
   (ESP-16)<-------(ESP)       ;这里指的是指令执行前的ESP
   (ESP-20)<-------(EBP)
   (ESP-24)<-------(ESI)
   (ESP-28)<-------(EDI)
   (ESP)<-------(ESP)-32
(5)POP DS
(DS)<------((SP)+1,(SP))
(SP)<------(SP)+2
(6) PUSH 4
(SP)<-------(SP)-2
(SP+1)<-----0
(SP)<------4
 43。(1)    2CE FF93H       (2) 24B  76A0H
     (3)    909 0804H       (4) 6F 13ADH
44。 (1)0FFFF FFFCH         (2)0FFFF FFF8H
     (3)0000  0007H         (4)0000  0099H
45。 (EAX)=0     (EBX)=25d
46。 (AX)=3d     (DX)=7d
47。ADD ECX,EDX
    ADD ECX,ESI
    MOV  EDI  ,ECX
48。 IMUL BX,DX,100H执行的操作是:
    (BX)<-------(DX)*100H
49。程序实现:
MOV AL,BL
CBW 
IDIV  CL
IMUL 2
MOV DX,AX
50。
JMP DI 是直接跳转,执行的操作是:    (IP)<-----(IP)+(DI)
JMP [DI]是间接跳转,执行的操作是:   (IP)<----(IP)+([DI])跳转到DI中所指向的内存单元中的指令地址~
51。假设数组名为NUMBERS,程序如下~
MOV BX,0             ;后面用到~
MOV CX,100H          ;把循环次数放入CX
MOV AL,42H
MOV SI,0             ;初始化SI
;CHECK 用来实现查找功能~
CHECK :  CMP AL ,NUMBERS[SI]
INC SI
JB  STORE1         ;大于42H的数的个数存入UP
JA  STORE2         ;小于42H的的数的个数存入DOWN中~
LOOP CHECK         ;相等继续循环~
STORE1     INC  BL   ;找到一个大于42 的数,BL值增加1~
           MOV UP,BL
           LOOP CHECK
STORE2     INC BH    
           MOV DOWN ,BH
           LOOP CHECK  
52。图,也不用画了~~呵呵~好了,本章结束

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -