首页
社区
课程
招聘
[旧帖] [求助]汇编的小问题 0.00雪花
发表于: 2008-4-6 21:14 3301

[旧帖] [求助]汇编的小问题 0.00雪花

2008-4-6 21:14
3301

        LEA      SI,SOURCE
        MOV      DI,OFFSET RESULT
        MOV      CX,N

SERCH1: MOV      _,[SI]___   ;这里应该填什么,是AL,还是AX,SOURCE用DB定义了,答案是AL

        CMP      AX,AL                   ; AX里存什么呢? 假如上边是AL,那么AX中的AH也有AL的内容呢?               
        AND      AH,0FH
AND      AL,0F0H
PUSH     CX
MOV      CL,4


请问哪里有汇编高手啊,我找不到,在这里发一下,这个是三级PC汇编题目.原题如下

一、请编制程序,其功能是:以SOURCE开始的内存区域存放着N个字节的压缩BCD码,将每个压缩BCD码转换成两个ASCII码,并在最高位增加偶校验位,结果存放到RESULT指示的内存区域。
例如:
原压缩BCD码:26H,75H,91H,33H…
结果为:       B2H,36H,B7H,35H,39H,B1H,33H,33H…
    部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
   
    试题程序:

         EXTRN    LOAD:FAR,SAVE:FAR
N        EQU      10
STAC    SEGMENT  STACK
         DB       128 DUP(?)
STAC    ENDS
DATA    SEGMENT
SOURCE   DB       N DUP(?)        
RESULT   DB       2*N DUP(0)        
NAME0    DB       'INPUT1.DAT',0
NAME1    DB       'OUTPUT1.DAT',0
DATA    ENDS
CODE    SEGMENT
         ASSUME  CS:CODE,DS:DATA,SS:STAC
START   PROC     FAR
        PUSH     DS
        XOR      AX,AX
        PUSH     AX
        MOV      AX,DATA
        MOV      DS,AX
        MOV      ES,AX                ;置附加段寄存器
        LEA      DX,SOURCE            ;数据区起始地址
        LEA      SI,NAME0             ;原始数据文件名
        MOV      CX,N                 ;字节数
        CALL     LOAD                 ;从'INPUT1.DAT'中读取数据
;****BEGIN****
        LEA      SI,SOURCE
        MOV      DI,OFFSET RESULT
        MOV      CX,N
SERCH1: MOV      _,[SI]_________________
        CMP      AX,AL
        AND      AH,0FH
AND      AL,0F0H
PUSH     CX
MOV      CL,4
_SHR_____AL,CL_____________________
__POP____CX_____________________
ADD      AL,30H
_JP______SERCH2____________________
OR       AL,80H
SERCH2: MOV      [DI],AL
INC      DI
_ADD_____AH,30H_____________________
JP       SERCH3
OR       AH,80H
SERCH3: MOV      [DI],AH
INC      DI
INC      SI
_LOOP_______ SERCH1
;****END****
        LEA      DX,RESULT      ;结果数据区首址
        LEA      SI,NAME1       ;结果文件名
        MOV      CX, 2*N        ;字节数
        CALL     SAVE           ;保存结果到文件
        RET
START   ENDP
CODE    ENDS
        END    START

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
共同学习了!
2008-4-6 23:33
0
游客
登录 | 注册 方可回帖
返回