内容发布更新时间 : 2025/10/31 17:56:49星期一 下面是文章的全部内容请认真阅读。
POP CX POP DX
之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。
解答: SS=1000H
SP=1FFEH CX=2115H DX=5678H 栈中各单元内容如下所示:
地址 RAM 11FFAH 2115 11FFCH 5678 11FFEH 1234 12000H
第4章 宏汇编语言
习题与思考题
1.画出以下变量在内存中存储的示意图。 D1 DB ‘A’,’123’,09H, 45 D2 DW ‘A’,’CD’,23H, 4567H D3 DD 1234H, 23456789H
2.设计子程序分别完成以下功能:
1)根据给定的参数值,判断该参数是偶数还是奇数。 2)把给定参数值的高、低数据位互换。
3.设计相应的宏完成以下功能: 1)把给定的参数按二进制显示。
2)求两个参数的和,并按十进制形式显示。 6
范文范例 学习指导
第5章 汇编语言程序设计
习题与思考题
1. 设数据段中有字节型单元NUMBER和FLAG,判断NUMBER与给定的X和Y的大小关系(X 解答:.486 Data segment NUMBER db ? FLAG db ? Data ends Code segment     Assume cs: Code, ds: Data Beg: mov ax,data       Mov ds,ax  mov al, X     Mov bl, Y     Cmp NUMBER, X     Jnc P1      Mov FLAG, 0FFH     Jmp exit  P1:  cmp NUMBER, Y     Ja P2      Mov FLAG, 00H     Jmp exit  P2:  mov FLAG, 01H Exit: mov ah, 4ch      Int 21h Code ends      End Beg   2. 计算1+2+3+…+100,并把和保存在SUM单元中。 .486  DATA  SEGMENT  USE16  TT         DB   1 SUM       DW   ? DATA  ENDS  CODE  SEGMENT  USE16                                word完美整理版                                     ASSUME  CS:CODE,DS:DATA BEG:     MOV  AX ,  DATA             MOV  DS,   AX             MOV  CX,   100             MOV  AX,   0 START:   ADD  AX,   TT             INC    TT  LOOP  START MOV  SUM,  AX MOV  AH,    4CH MOV  21H  CODE  ENDS  END   BEG    3. 对一个给定的N数据,用冒泡排序法进行排序。 解答:.486  Data segment  Buf db ‘abcd18437hj’ Lens equ $-buf Count db lens Flag db ? Data ends Code segment       Assume cs: code, ds: data Beg: mov ax, data     Mov ds, ax Again: dec count       Jz done       Mov flag, 0       Mov cx, count        Mov si, offset buf  Last: mov al, [si]       Mov ah, [si+1]       Cmp ah, al       Jnc next        Mov [si], ah       Mv [si+1], al       Mov flag, 1 Next:  inc si 8   范文范例  学习指导        Loop last       Cmp flag, 1       Je again  Done: mov buf+lens, ‘$’       Mov ah, 9        Mov dx, offset buf       Int 21h       Mov ah, 4ch       Int 21h Code ends       End Beg    4. 由键盘输入任意的两个十进制数,然后转换成对应的压缩BCD码的形式在屏幕上显示。  .486  DATA  SEGMENT  USE16 BCD       DB   ? BUF       DB   3   DB   ?  DB   3DUP(?)  MESG1      DB   ‘PLEASE INPUT :’,0DH,OAH,’$’  MESG2      DB   ‘ERROR! NUMBER IS FROM 0 TO 9. PLEASE AGAIN!$’   DATA  ENDS   CODE  SEGMENT  USE16         ASSUME  CS:CODE,DS:DATA BEG:      MOV  AX ,  DATA            MOV   DS,   AX  L1:        MOV   DX,   OFFSET MESG1             MOV   AH,   9           ;显示MESG1  INT    21H           MOV   AH,   0AH  MOV   DX,   OFFSET BUF  INT    21H            ;输入字符串 MOV   AL,  BUF+2 CMP    AL,  30H JC     ERROR CMP    AL,  3AH  JC    NEXT          ;判断第一个数输入是否符合要求  ERROR:  MOV   DX, OFFSET MESG2                                word完美整理版                              MOV   AH,  9             INT    21H             JMP     L1          ;输入错误提示重新输入 NEXT:    SUB    AL,  30H             SAL     AL,   4          ;求出十位数字            MOV   BCD, AL            MOV    AL,  BUF+3            CMP    AL,   30H  JC    ERROR  CMP    AL,   3AH  JNC   ERROR        ;判断第二个数输入是否符合要求             SUB    AL,   30H            OR     BCD,  AL            MOV   AH,   4CH  INT     21H  CODE      ENDS             END   BEG   5. 由键盘输入两个十六进制数,转换成等值的十进制数后在屏幕上显示。  CMPDISP    MACRO   NN             ;用宏语句完成比较法二进制到十进制转换 LOCAL     LAST,NEXT              MOV      DL,       0 LAST:      CMP     NUM,     NN             JC      NEXT  INC     DL  SUB     NUM,     NN JMP     LAST  NEXT:      ADD      DL,       30H             MOV      AH,       2             INT       21H             ENDM  DATA  SEGMENT  USE16  NUM      DB    ? BUF       DB    3  DB    ?  DB   3DUP(?)  DATA  ENDS   CODE  SEGMENT  USE16         ASSUME  CS:CODE,DS:DATA  10