• 2022-06-18
    数据定义语句如下所示:FIRST DB 90H,5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP (?)自FIRST 单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:编一段程序将这个数左移两位后存放到自SECOND 开始的单元,右移两位后存放到自THIRD 开始的单元,求补后放到FORTH开始的单元。(注意保留移出部分)
  • DATA SEGMENTFIRST DB 90H,5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDMOV CX,2CLC;左移2 位MOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ;DX=696EH 为高十六位数据PUSH DX ;保存原有的高十六位数据PUSH AX ;保存原有的低十六位数据ROL DX,CL;将高位数据不带进位循环左移两位,即高2 位数据在DL 的低2 位AND DL,03H ;让DL 中仅保存移出的高2 位数据MOV [DI+4] ,DL;将移出的高2 位数据放入SECOND 中的最高单元中ROL AX,CL;将低位数据不带进位循环左移两位,即AX 的高2 位在AL 的低2 位AND AL,03H;让AL 中仅保存移出的AX 高2 位数据MOV BL ,AL;将AL 中的数据放入BL 中保存POP AX;弹出原有的低十六位数据POP DX;弹出原有的高十六位数据SHL DX,CL;将高位数据算术逻辑左移2 位SHL AX,CL;将低位数据算术逻辑左移2 位OR DL,BL;将AX 中移出的高2 位数据放入DX 的低2 位MOV WORD PTR [DI] ,AXMOV WORD PTR [DI+2] ,DX;右移2 位LEA SI,FIRSTLEA DI,THIRDMOV CX,2CLCMOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据PUSH DX;保存原有的高十六位数据PUSH AX;保存原有的低十六位数据ROR AX,CL;将低位数据不带进位循环右移两位,即低2 位数据在AH 的高2 位AND AH,0C0H;让AH 中仅保存移出的低2 位数据PUSH CXMOV CX,6SHR AH,CLPOP CXMOV [DI] ,AH ;将移出的低2 位数据放入THIRD 中的最低单元中ROR DX, CL;将低位数据不带进位循环左移两位,即AX 的高2 位在AL 的低2 位AND DH,0C0H ;让DH 中仅保存移出的DX 低2 位数据MOV BL ,DH ;将DH 中的数据放入BL 中保存POP AX ;弹出原有的低十六位数据POP DX ;弹出原有的高十六位数据SHR DX,CL ;将高位数据算术逻辑左移2 位SHR AX,CL ;将低位数据算术逻辑左移2 位OR AH,BL ;将DX 中移出的低2 位数据放入AX 的高2 位MOV WORD PTR [DI+1] , AXMOV WORD PTR [DI+3] ,DX;求补LEA SI,FIRSTLEA DI,FORTHMOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据XOR AX, 0FFFFH ;将低十六位取反XOR DX, OFFFFH ;将高十六位按位取反CLCADD AX,01H ;低位加1,即可为原数的求补ADC DX,0 ;高位加低位加法时的进位MOV WORD PTR [DI] , AXMOV WORD PTR [DI+2] ,DXMOV AH,4CHINT 21HCODE ENDSEND START

    内容

    • 0

      中国大学MOOC: 已知某数据段定义如下( ) MYDATA SEGMENT D1 DB 5 DUP(0) D2 DW 2 DUP(42H) D3 DB ‘Hello!‘ D4 EQU 100 D5 DD 1234H D6 DB ? MYDATA ENDS则变量D6的偏移地址是( )。

    • 1

      数据段: BUF DB 15,?,15 DUP(?)代码段: MOV AH,0AH MOV DX,OFFSET BUF INT 21H 若用户执行该程序段,从键盘输入字符串‘ABCDE’并回车后,BUF+1字节单元的内容是______H;BUF+2字节单元的内容是______H;BUF+7字节单元的内容是__________H。(注答案和答案之间用一个空格分开)

    • 2

      设数据段定义如下:DATA SEGMENTBUF1 DB 2,3BUF3 DB 2,3 DUP (0)BUF5 DW BUF 3DATA ENDS请回答 :(1)该数据段占用的内存有多少字节?(2)BUF5 单元中的值是多少?(3)执行 “MOV AL ,BUF3+2” 指令后, AL= 。

    • 3

      内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组台的十进制和,并存到以THIRD开始的单元.

    • 4

      在下面语句中A1 DB 5 DUP(1234H, 567890H),变量A1占多少字节 (