回 帖 发 新 帖 刷新版面

主题:[讨论]请教两个汇编程序,结果为何不正确,哪错了

[size=2]
1)、已知NUMX  DB  01H,12H,23H,00H
     NUMY  DW  10H,12H,13H,14H
        DB  $-NUMY
        DB  100H DUP(1,2,3)
试问执行MOV  BX,[06H]
        AND  BX,0FFH
        ADD  BX,[BX]后,(BX)=?
我编写的程序是
DATA  SEGMENT
  NUMX  DB  01H,12H,23H,00H
  NUMY  DW  10H,12H,13H,14H
  COUNT  DB    $-NUMY
         DB   100H DUP(1,2,3)
DATA  ENDS

CODE  SEGMENT
  ASSUME  CS:CODE,DS:DATA
MAIN:
    MOV  AX,DATA
    MOV  DS,AX
    ;MOV  BX,00H
    MOV  AX,00H

    MOV  SI,00H
    LEA  SI,NUMX
    MOV  DI,00H
    LEA  DI,NUMY
    LEA  SI,COUNT

    MOV  BX,[06H]
    AND  BX,0FFH
    ADD  BX,[BX]

    MOV  DX,00H
    MOV  DX,BX
    ;SUB  DX,30H
    MOV  AH,02H
    INT  21H

    MOV  AH,4CH
    INT  21H
CODE  ENDS
      END  MAIN
运行后,得到的是↑,用debug得到的也与我直接根据题目算的有出入

2)、已知org 100h
data1 dw 0f345h,1000h
data2 dw 1045h,2000h
     :
     :
      mov bx,offset data1
      lea si,data2
      mov ax,2[bx]
      add ax,2[si]
      mov data2,ax
要求显示data2中的内容
我写的程序是:
DATA  SEGMENT
    ORG  100H
  DATA1  DW  0F345H,1000H
  DATA2  DW  1045H,2000H
  DATA3  DW  ?
DATA  ENDS

CODE  SEGMENT
  ASSUME  CS:CODE,DS:DATA
MAIN:
    MOV  BX,OFFSET DATA1
    LEA  SI,DATA2
    MOV  AX,2[BX]
    ADD  AX,2[SI]
    MOV  DATA3,AX

    MOV  CX,2
LP:
    MOV  DX,[SI]
    SUB  DX,0030H
    MOV  AH,2
    INT  21H
    
    MOV  DL,0AH
    MOV  AH,2
    INT  21H

    ADD  SI,0002H
    JNZ  LP

    MOV  AH,4CH
    INT  21H
CODE  ENDS
      END  MAIN
也是得到的跟预想的有出入

希望大家能指正新手,万分感谢![/size][em2]

回复列表 (共4个回复)

沙发

晕,你上课在睡觉啊?写得什么代码?

板凳

不错,比我当年学汇编时强

3 楼

你自己debug一下就好了,

4 楼

敢问第一个程序你自己算出的是什么结果阿

我来回复

您尚未登录,请登录后再回复。点此登录或注册